Created
June 2, 2025 23:15
-
-
Save Animenosekai/0b986801178be6af62b86d1ec8f99f5e to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
MAIN MOV R11, R13 ; On initialise le BP | |
SUB R13, R13, #4 *2 ; On réserve 2 emplacements pour les variables locales | |
; Pour accéder à `o` : [R11, #-4 * 1] | |
; Pour accéder à `p` : [R11, #-4 * 2] | |
; o = f1(3) | |
MOV R0, #3 | |
STMFD R13!, {R0} | |
SUB R13, R13, #4 | |
BL F1 | |
LDR R0, [R13] ; Pour accéder à la valeur de retour | |
STR R0, [R11, #-4 *1] | |
; o = o + 6 | |
LDR R0, [R11, #-4 *1] | |
ADD R0, R0, #6 | |
STR R0, [R11, #-4*1] | |
; p = f2(o) | |
LDR R0, [R11, #-4*1] | |
STMFD R13!, {R0} | |
SUB R13, R13, #4 | |
BL F2 | |
LDR R0, [R13] | |
STR R0, [R11, #-4*2] | |
END | |
F1 STMFD R13!, {R0, R11, LR} | |
MOV R11, R13 | |
SUB R13, R13, #4 ; On réserve un emplacement pour la variable locale `j` | |
; Pour accéder à `j` : [R11, #-4 * 1] | |
; Pour accéder à `i` : [R11, #4 * 4] ; r0, r11, lr, return 1, i | |
; j = f2(i + 1) | |
LDR R0, [R11, #4 * 4] | |
ADD R0, R0, #1 | |
STMFD R13!, {R0} | |
SUB R13, R13, #4 | |
BL F2 | |
LDR R0, [R13] | |
STR R0, [R11, #-4 *1] | |
; return j + 2 | |
LDR R0, [R11, #-4 *1] | |
ADD R0, R0, #2 | |
STR R0, [R11, #4 *3] | |
MOV R13, R11 | |
LDMFD R13!, {R0, R11, PC} | |
END | |
F2 STMFD R13!, {R0, R11, LR} | |
MOV R11, R13 | |
SUB R13, R13, #4 | |
; k = j + 2 | |
LDR R0, [R11, #4 * 4] | |
ADD R0, R0, #2 | |
STR R0, [R11, #-4 *1] | |
; return k | |
LDR R0, [R11, #-4 *1] | |
STR R0, [R11, #4 *3] | |
MOV R13, R11 | |
LDMFD R13!, {R0, R11, PC} | |
END |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Adresse Valeur Nom Signification | |
FF000000 --------------------------------------------------- BP | |
FEFFFFFC 8 o variable locale main | |
FEFFFFF8 16 p variable locale main | |
FEFFFFF4 3 i parametre f1 | |
FEFFFFF0 8 valeur retour f1 | |
FEFFFFEC 0x18 LR adresse retour main | |
FEFFFFE8 0xFF000000 BP BP de main SP | |
FEFFFFE4 xxx R0 sauvegarde R0 | |
FEFFFFE0 6 j variable locale f1 | |
FEFFFFDC 4 j parametre f2 | |
FEFFFFD8 6 valeur retour f2 | |
FEFFFFD4 0X3C LR adresse retour F1 | |
FEFFFFD0 0xFEFFFFE4 BP BP de f1 | |
FEFFFFCC xxx R0 sauvegarde R0 | |
FEFFFFC8 6 k variable locale f2 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment