【发布时间】:2013-01-26 20:05:41
【问题描述】:
我有一个用 C 语言编写的应用程序,我确实需要在调用函数之前修改其中一个处理器寄存器的值。通常我会使用内联汇编来执行此操作,但众所周知,对于 64 位应用程序已将其删除。由于某些项目限制,我也无法在使用 ml64 编译的单独 .asm 文件中执行此操作。所以基本上我需要执行以下内联代码的等价物:
_asm mov r10d, 0xDEADBEEF
有没有人知道 x64 的创造性方法或其他编译器可以让您修改内联寄存器的值?
【问题讨论】:
-
为什么您需要更改寄存器?哪个寄存器?
-
这是不可能的。你已经排除了替代方案。
-
您仍然可以将机器代码放入数组中,使底层内存可执行并执行它。创意怎么样?
-
因为我已经有用汇编编写的代码,要求在调用之前在 r10 寄存器中存在一个值。
-
@Alexey 这可能行得通。是的,这很有创意:)
标签: windows visual-studio-2010 assembly x86-64 intrinsics