【发布时间】:2011-03-27 15:17:08
【问题描述】:
如果我在 Windows VC++ 中有以下代码:
DWORD somevar = 0x12345678;
_asm call dword ptr [somevar]
如何在 GCC 内联汇编中使用 AT&T 语法制作相同的东西?
__asm__ __volatile__ (
"call dword ptr [%%edx]" : :
"d" (somevar)
);
我尝试过类似的方法,但它会产生“垃圾”错误...
然后我尝试将somevar 传递给一些寄存器,然后将其转换为dword、ptr 等,但我无法让它工作。
更新:我发现了一些有用的东西,好像在这种情况下我们必须使用括号而不是方括号,我发现用lcall 调用far .但是我还是不明白怎么才能重现dword ptr。
【问题讨论】:
标签: c++ linux gcc assembly inline-assembly