c++ - 在 64 位 Visual Studio 上替代 __asm _emit
问题描述
编辑:前一个被标记为重复。在汇编中编写一个带有序言和结尾的函数然后调用它是一回事,而将汇编代码通过字节直接合并到任何其他代码中是另一回事,这就是我想要做的。
我需要一个 __asm _emit 的替代品,更具体地说,在 64 位 Visual Studio 上,因为内联汇编在 32 位上可用,但在他们开始编写 64 位版本之前,他们决定不容忍使用内联汇编。
我需要能够使用字节将汇编代码直接合并到我的函数中。因此,以下代码将首先打印 69,然后打印 0。
int main()
{
unsigned int _eax;
__asm
{
mov eax, 69;
mov _eax, eax;
}
printf("%d\n", _eax); // 69
// 0x31, 0xC0
// xor eax, eax
__asm _emit 0x31;
__asm _emit 0xC0;
__asm
{
mov _eax, eax;
}
printf("%d\n", _eax); // 0
getchar();
return 0;
}
解决方案
推荐阅读
- leakcanary - LeakActivity Leaked 显示在 Leak Canary 上
- java - 动态添加的微调器为空
- javascript - 如何通过复选框使用 openlayers 在地图上应用多个地图图层?
- xml - 如何以 xml 格式制作可重用的示例
- python-3.x - 如何使用熊猫将第一整行设置为大数据中的索引?
- android - 通过 onNewIntent 接收的内容 uri 的持久权限
- android - 此 Realm 实例已经关闭,即使关闭检查也无法使用
- javascript - 如何使一个 div 出现并在一定时间后全部隐藏
- c# - 如何使用 Ajax 发送输入文本和 FileUploud 数据
- actions-on-google - 智能家居报告状态实时在 2 个或更多设备中