我正在开发一个使用内联汇编来执行跳远的程序。据我了解,我需要做的就是将 FP 和 PC 替换为保存的 FP 和 PC。使用程序集,我可以更改帧指针 (%ebp),但我无法对 PC 执行此操作。
int jump(int x)
{
int oldFP = getebp(); //the FP of the calling function
int oldPC = getebp()+4; //the PC of the calling function
ljump(); //uses assembly to change FP (works) but can't figure out PC
return x;
}
我ljump()
的是
ljump: # return stack frame pointer FP
movl savedFP, %ebp
ret
我之前尝试更改 PC 一直在使用跳转,但是我通常会遇到分段错误。
任何输入将不胜感激。