Skip to content

Sarenard/Rasm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rasm

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

Comment lancer rasm ?

Pour compiler et lancer input/input.pyasm

cargo build && ./target/debug/rasm -f input/input.pyasm --compile --run

Pour lancer les tests

python3 test.py -t

Pour enregistrer de nouveaux tests

python3 test.py -r

Pour juste compiler rasm

cargo build --release

Objectifs long terme

  • Turing complet
  • Accès mémoire correct
  • Self hosting
  • Type checking

Syntaxe

Découpage

La syntaxe sera découpée en trois morceaux :

  • L'explication de la commande
  • Un cas d'utilisation dans pyasm
  • Un équivalent en python

<int>

Push le nombre donné sur la stack

3
stack.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)

divmod

Calcule le reste et le dividende

5 10 divmod
nombre = stack.pop()
diviseur = stack.pop()
reste = nombre % diviseur
dividende = nombre // diviseur
stack.push(dividende)
stack.push(reste)

true

Ajoute true sur la stack (est push par les if/conditions)

true .
stack.push(True)

false

Ajoute false sur la stack (est push par les if/conditions)

false .
stack.push(False)

Inspirations et remerciments

  • 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

About

Un language compilé en asm par du rust

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published