以下是移植到stm32的程序,写这个程序用了4天。前两天处理32变砖,后两天迷茫直到最后才调试出来。
“栈传递参数”一年多之前就有需求。在诸多朋友和老哥的指导下,直到现在才解决
;栈传参数测试 stm32
AREA DATA,CODE,READONLY
AREA MASTER,CODE,READONLY
EXPORT __main
ENTRY
__main
GG BL CCDE ;调用CCDE
B GG
CCDE
PUSH {R4-R11,LR}
MOV R0,SP ;保存该程序栈
LDR R4,=0X11111111 ;数据压入栈A
PUSH {R4}
LDR R5,=0X22222222
PUSH {R5}
LDR R6,=0X33333333
PUSH {R6}
LDR R7,=0X44444444
PUSH {R7}
LDR R8,=0X55555555
PUSH {R8}
LDR R9,=0X66666666
PUSH {R9}
LDR R10,=0X77777777
PUSH {R10}
LDR R11,=0X88888888
PUSH {R11}
MOV R1,SP ;保存栈顶A
BL CCEF ;调用CCEF
MOV SP,R0 ;恢复该程序栈
POP {R4-R11,LR}
BX LR
CCEF
PUSH {R4-R11,LR}
MOV R2,SP ;保存该程序栈
MOV SP,R1 ;指向栈A
POP {R4} ;取A栈值
POP {R5}
POP {R6} ;取A栈值
POP {R7}
POP {R8} ;取A栈值
POP {R9}
POP {R10} ;取A栈值
POP {R11}
MOV SP,R2 ;恢复该程序栈
POP {R4-R11,LR}
BX LR
END
|