我需要将一个指针推入 eax 并将另一个指针推入 ebx 寄存器。我首先解决了这个问题:
register int eax asm("eax");
register int ebx asm("ebx");
int main()
{
eax = ptr1;
ebx = ptr2;
}
这就像一个魅力。但是,当我将它添加到我的其他代码中时,我遇到了一些奇怪的错误,即 gcc 在代码的完全不相关的部分中无法在 AREG 类中找到要溢出的寄存器。我用谷歌搜索,结果实际上是 gcc 中的一个错误-.-。所以,我需要另一种方法,将两个指针压入 eax 和 ebx 寄存器。有人有什么想法吗?
编辑:
由于人们一直在问我要在这里完成什么,我想我会解释一下。
我需要为我试图在我的程序中运行的一些汇编代码更改 eax 和 ebx。我需要执行这个汇编代码,并通过 eax 和 ebx 寄存器给参数一个指针。我通过在 ebx 中推送一个指向它的指针并调用 ebx 来执行汇编代码。当我不在全局范围内而是在本地调用寄存器时,汇编代码会崩溃。如果我全局调用它,我会在随机函数的末尾得到这个奇怪的错误。当我删除该函数时,它会在另一个随机函数中引发相同的错误。直到我用完函数,然后它才能工作,但是我错过了其余的代码:P