assembly - THUMB 推/弹出指令

标签 assembly arm thumb

我正在尝试使用 THUMB 指令创建一个阶乘方法,我基本上做到了。

我只有一个关于 PUSH/POP 操作码的问题:如果我使用 push 将 r0 的值存储在堆栈中(所以 push {r0} ),我可以稍后使用 pop {r1} 将其拉出,还是需要指定与开始时相同的寄存器?感谢您的帮助。

最佳答案

是的,因为 push/pop 实际上可以扩展为存储/加载多个,它们是对寄存器和内存进行操作的通用指令,所以

push {r0}

相当于

stmdb sp!, {r0}  @ or stmfd sp!, {r0} in alt notation

pop {r1}

相同
ldmia sp!, {r1}  @ or ldmfd sp!, {r1}

关于assembly - THUMB 推/弹出指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13686353/

相关文章:

c++ - vector 中的 Intrinsics Neon Swap 元素

arm - 对于 Cortex-M3,如何优化 block 复制和右移 + 饱和到 max=5

gcc - Apple AS 和 ARM/Thumb ADDS 指令

arm - 在 Thumb 和 ARM 之间跳转

c++ - 我的 x86 目标文件中这些看似无用的 callq 指令有什么用?

c - 带有汇编代码的总线错误 10 + 一般问题

performance - 复杂的寻址模式是否对从内存加载有额外的开销?

c - 存储在 EEPROM 中的数据结构的卷影副本

assembly - x86 JAE指令与进位标志有何关系?

embedded - uboot-uart.bin 和 uboot.bin 之间的区别?