![]() |
1
1
综上所述: 调试输出显示代码是为64位编译的,并且(正如Hans所指出的)所使用的异常处理样式仅对32位有效。确保代码编译为32位可以解决问题。 如果这回答了您的问题,请单击左侧的复选标记,以便获得业力。 |
![]() |
2
0
除了64位的问题之外,你还无缘无故地大吃一惊
我很惊讶它竟然能和你的原始消息源一起工作。你很幸运,编译器正在重写
你也很幸运,编译器没有在两个asm语句之间插入任何指令
除此之外,
使用以下内容
当被询问时,编译器将负责将变量保存在寄存器中。如果它想存储
由于(根据Hans的说法),此代码仅在32位时有用,所以我在
除此之外,此源代码可以编译为正确的64位代码,因为它没有显式命名任何寄存器。
您可以删除
要使它在32位和64位之间可移植地使用立即数操作数,您需要让它输出64位的“movq”。我认为您必须使用预处理器来测试i386和amd64。
|
![]() |
Ruslan · 我需要检查CPUID.01:EDX[5]吗? 7 月前 |
![]() |
M Rajoy · DOS中断10与AX 700 7 月前 |
![]() |
rdre8 · x86指令,堆栈指针解释 11 月前 |
![]() |
user997112 · AVX512执行512位8位字符的AND 1 年前 |
![]() |
St.Antario · 两个连续的语句是否排列在一起? 1 年前 |
![]() |
spyblock · 试图将值传递到保留字节 1 年前 |