汇编语言与高级语言的交互实践
1. 状态保存与恢复
在汇编代码中,为了避免函数调用过程中寄存器的值被意外修改,需要对可能被使用或被 printf 函数改变的寄存器(如 X0 - X18 和 LR )进行保存和恢复操作。由于每条指令一次只能保存或恢复两个寄存器,而这里有19个可被修改的寄存器加上 LR ,所以需要十条指令来将这些寄存器的值压入栈中,同样也需要十条指令将它们从栈中弹出。
2. 调用 printf 函数
调用 printf 函数时,使用如下参数:
printf("R%c = %32ld, 0x%016lx\n", reg, Rreg, Rreg);
这里有四个参数,需要将它们设置到 X0 - X3 寄存器中。 printf 函数中,以百分号 % 开头的字符串会获取下一个参数,并根据紧随其后的字母进行格式化:
| 符号 | 含义 |
| ---- | ---- |
| c | 字符 |
| d | 十进制数 |
| x | 十六进制数 |
| 0 | 用0填充 |
| l | 长整型(64位) |
| 数字 | 指定打印字段的长度 |
注意,在打印 X0
超级会员免费看
订阅专栏 解锁全文
1170

被折叠的 条评论
为什么被折叠?



