/ README.md
README.md
 1  ```Text
 2  .-.-.-..-.,-.
 3  | | | || . <
 4  `-----'`-'`-'
 5  ```
 6  
 7  # WBC - Wilrak0v ByteCode
 8  WBC est un bytecode minimaliste qui est très léger et peut donc s'exécuter sur ESP32.
 9  
10  # Langage ASM
11  Voici le langage ASM que j'ai décidé d'implémenter.
12  ```
13  | Opcodes    | Opérandes |
14  |------------|-----------|
15  | Stack      |           |
16  |------------|-----------|
17  | push       | value     |
18  | pop        |           |
19  | pushk      | ref       |
20  | popk       |           |
21  | const      | int, str  |
22  |------------|-----------|
23  | Opérations |           |
24  |------------|-----------|
25  | add        |           |
26  | sub        |           |
27  | mul        |           |
28  | div        |           |
29  | mod        |           |
30  | neg        |           |
31  |------------|-----------|
32  | RAM        |           |
33  |------------|-----------|
34  | store      | index     |
35  | load       | index     |
36  |------------|-----------|
37  | IO         |           |
38  |------------|-----------|
39  | echo       |           |
40  | read       |           |
41  |------------|-----------|
42  | Conditions |           |
43  |------------|-----------|
44  | jmp        | label     |
45  | jb         | label     |
46  | js         | label     |
47  | jq         | label     |
48  ```
49  Exemple
50  ```ASM
51  func young
52      const "Vous êtes mineur"    ; définis une constante (id=1)
53  end
54  
55  func adulte
56      const "Vous êtes majeur"    ; définis une constant (id=1)
57  end
58  
59  func old
60      const "Vous êtes retraité"  ; définis une constante (id=1)
61  end
62  
63  func print
64      pushk 1
65      echo
66      popk 1
67  end
68  
69  const "Quel âge avez-vous ?\n"  ; Définis une constante
70  pushk 0                         ; push la référence de la constante sur la pile
71  echo                            ; affiche la constante
72  popk 1                          ; supprime la référence de la pile
73  const 14                        ; définis la constante pour l'âge au lieu d'un read
74  
75  push 18
76  js young                        ; vérifie si l'âge est sous 18 ans
77  
78  jb adulte                       ; vérifie si l'âge est au dessus de 18 ans
79  pop
80  
81  push 65
82  jb old                          ; vérifie si on est retraité
83  pop
84  
85  jmp print
86  ```
87  **Sortie**
88  ```
89  Quel âge aves-vous ?
90  Vous êtes mineur
91  ```
92  
93  # Contributeurs
94  Tous les contributeurs sont les bienvenues.
95  Pour ce faire, il vous suffit de faire un fork et d'ensuite proposer un(e) pull request :).
96  
97  *wilrak0v, btw*