如果我在 Windows VC++ 中有以下代码:
DWORD somevar = 0x12345678;
_asm call dword ptr [somevar]
如何使用 AT&T 语法在 GCC 内联汇编中做同样的事情?
__asm__ __volatile__ (
"call dword ptr [%%edx]" : :
"d" (somevar)
);
我试过这样的事情,但它会产生一个“垃圾”错误......
然后我尝试传递somevar
给一些寄存器,然后将其转换为dword
,ptr
等,但我无法让它工作。
更新:我发现了一些有用的东西,就像在那种情况下我们必须使用括号而不是括号一样,我发现了一些lcall
调用 as 的东西far
。但我仍然无法理解如何重现dword ptr
。