Rasm est un language approximatif, codé en rust et qui se compile en assmbleur x86_64.
Non, je ne connais ni le rust ni l'assembleur, mais oui je me lance la dedans, on verra bien
Pour compiler et lancer input/input.pyasm
cargo build && ./target/debug/rasm -f input/input.pyasm --compile --runPour lancer les tests
python3 test.py -tPour enregistrer de nouveaux tests
python3 test.py -rPour juste compiler rasm
cargo build --release- Turing complet
- Accès mémoire correct
- Self hosting
- Type checking
La syntaxe sera découpée en trois morceaux :
- L'explication de la commande
- Un cas d'utilisation dans pyasm
- Un équivalent en python
Push le nombre donné sur la stack
3stack.push(3)Affiche le nombre sur la stack en décimal
3 .stack.push(3)
print(stack.pop())Additionne les deux éléments sur la stack et push le résultat
3 3 +stack.push(stack.pop() + stack.pop())Multiplie les deux éléments sur la stack et push le résultat
3 3 *stack.push(stack.pop() * stack.pop())Soustrait le premier element de la stack par le deuxième
3 4 -a = stack.pop()
b = stack.pop()
stack.push(a - b)Calcule le reste et le dividende
5 10 divmodnombre = stack.pop()
diviseur = stack.pop()
reste = nombre % diviseur
dividende = nombre // diviseur
stack.push(dividende)
stack.push(reste)Ajoute true sur la stack (est push par les if/conditions)
true .stack.push(True)Ajoute false sur la stack (est push par les if/conditions)
false .stack.push(False)- Porth Pour l'idée d'un language compilé en assembleur
- @tsodingDaily Pour m'avoir donné envie de créer un language, puis un autre, puis un autre...
- @rchapman Pour ce magnifique blog sur les syscall linux