AMD64架构下实现pc ← (sp)无自动递减的等效指令方法咨询
AMD64 实现方法
AMD64指令集里确实没有直接的pc ← (sp)指令,最简短的等价实现是单条跳转指令:
- AT&T 语法:
jmp *%rsp - Intel 语法:
jmp [rsp]
这条指令会直接将栈顶指针指向的内存值加载到程序计数器(RIP),完全达成需求,且不会对SP做自动递减操作。
ARM 架构实现方案
ARM架构的实现分32位和64位两种情况:
- AArch32(32位ARM):直接使用
LDR PC, [SP]指令即可,这条指令会把栈顶内存的值加载到PC寄存器,且不会修改SP的值,完全匹配需求。 - AArch64(64位ARM):AArch64不支持直接从内存加载值到PC,需要通过通用寄存器中转,最简短的实现是两条指令:
也可以用LDR X0, [SP] BR X0RET X0替代BR X0,不过BR更直接体现分支到指定地址的意图。
内容的提问来源于stack exchange,提问作者Jim Sawyer
相关产品推荐
相关产品推荐

