Skip to content

Instantly share code, notes, and snippets.

@Animenosekai
Created June 2, 2025 23:15
Show Gist options
  • Save Animenosekai/0b986801178be6af62b86d1ec8f99f5e to your computer and use it in GitHub Desktop.
Save Animenosekai/0b986801178be6af62b86d1ec8f99f5e to your computer and use it in GitHub Desktop.
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
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