初级会员

- 积分
- 103
- 金钱
- 103
- 注册时间
- 2018-4-27
- 在线时间
- 40 小时
|
20金钱
本帖最后由 qq455717338 于 2018-8-29 14:20 编辑
其实我就是想看一看压栈和出栈的情况,结果都编译不过,因为只能看懂部分汇编,从来没编译过所有不知道错在那了。
我主要想研究的问题是,权威指南说的,“不管在寄存器中,寄存器序号是什么顺序,汇编都会从大到小出栈”
PUSH {R0-R2} ;这个是不是 压栈顺序就是 R2,R1,R0
PUSH {R3-R5,R8,R12} ;压栈顺序就是 R12,R8,R5,R4,R3
POP {R0-R2} ;按照权威指南的说法这的出栈是不是 R0,R1,R2但是,此时值是不是就换了,R0=R3,R1=R4,R2=R5
POP {R3-R5,R8,R12}
{如果不交换值 pop的顺序不应该 是 POP{R3-R5,R8,R12} POP {R0-R2}吗}
我的理解有错吗?
然后希望各位大大告诉我 汇编错在那,或者告诉我需要看什么书籍,谢谢.......
|
最佳答案
查看完整内容[请看2#楼]
PUSH {R0-R2};
PUSH {R3-R5,R8,R12} ;
“”“”“”
POP {R0-R2} ;
POP {R3-R5,R8,R12};
这样就一定错, 正确的是
PUSH {R0-R2};
PUSH {R3-R5,R8,R12} ;
“”“”“”
POP {R3-R5,R8,R12};
POP {R0-R2} ;
栈是后进先出的
|