Voila, nous avons fait le tour d'horizon de ce fabuleux langage nommé... euh... En fait c'est un langage sans nom :) !
En ce qui concerne le compilateur, voila une liste des options qu'il gère :
-s
spécifie le nom du fichier source-d
spécifie le nom du fichier de destination-v
affiche l'allocation de registre et les contextes-g
enregistre dans le fichier source le code source en commentaire-t
n'enregistre pas dans le fichier source les commentaires d'origine-h
devinez ;) !
Amusez-vous à compiler l'aide tutoriel en faisant :
bash# ./r3kcompiler -h bash# ./r3kcompiler -s tutorial.code -d tutorial.asm -g -t
Vous trouverez dans tutorial.asm
le code assembleur de ce tutoriel :
// iterator = 1 addi R1,R0,1 // temp1 = 2 addi R2,R0,2 // temp2 = 0 addi R3,R0,0 // temp3 = 5 addi R4,R0,5 // temp2 = temp1 + 2 addi R3,R2,2 // temp1 = temp3 + temp2 add R2,R4,R3 // temp3 = 3 - temp1 addi R4,R2,-3 sub R4,R0,R4 // temp2 = temp2 & temp2 and R3,R3,R3 // temp3 = temp1 | 0 ori R4,R2,0 // temp1 = temp1 << 1 lsl R2,R2,1 // temp1 = 2 >> temp3 lsr R2,R4,2 // temp1 = 0 <| temp2 slti R2,R3,0 xori R2,R2,1 // temp3 = temp1 add R4,R0,R2 // temp2 = temp1 nor temp2 nor R3,R2,R3 // temp1 = temp2 xor temp3 xor R2,R3,R4 // mem[10,temp2] = temp1 sw R2,10(R3) // temp3 = mem[21,temp1] lw R4,21(R2) // for iterator from 0 to 100 step 2 do addi R1,R0,0 :for_0 addi R5,R1,-100 bgtz R5,:end_for_0 addi R1,R1,2 // endfor j :for_0 :end_for_0 // while temp1 >= temp2 do :while_0 sub R5,R2,R3 bltz R5,:end_while_0 // endwhile j :while_0 :end_while_0 // for iterator from 0 to 100 step 2 do addi R1,R0,0 :for_1 addi R5,R1,-100 bgtz R5,:end_for_1 addi R1,R1,2 // break j :end_for_1 // endfor j :for_1 :end_for_1 // while temp1 >= temp2 do :while_1 sub R5,R2,R3 bltz R5,:end_while_1 // continue j :while_1 // endwhile j :while_1 :end_while_1 // if temp1 != temp3 then beq R4,R2,:end_then_0 // endif :end_then_0 // if temp1 < temp3 then sub R5,R2,R4 bgez R5,:end_then_1 // else j :end_else_1 :end_then_1 // endif :end_else_1 // free iterator // label pas_beau :pas_beau // goto pas_beau j :pas_beau // goto $temp1 jr R2
Il ne reste plus qu'à l'assembler avec votre assembleur favoris (mais ce code risque de ne pas faire grand chose d'utile !).
Merci de votre lecture (je crois n'avoir rien oublié) !