gpt4 book ai didi

c - Visual-C++ 内联汇编程序编译不正确

转载 作者:可可西里 更新时间:2023-11-01 10:48:39 25 4
gpt4 key购买 nike

最近我向社区询问了两个偏移量的差异 Visual-C++ inline assembler difference of two offsets并很快得到回复,非常感谢。现在我遇到了另一个问题,这个问题更糟。

我有这样的指令

    ..naked...
__asm{
...
mov eax, dword ptr [ebx + offset data1]
...
}

真正的问题是它被编译为

    mov eax, [offset data1]

此行没有编译器警告(/WAll 模式),但代码已更改且更改很多 - 想象一下,它完全被抛出 ebx + 部分!默默。它是编译器错误还是功能?也许我必须指定一些额外的标志?

问题仅在于偏移量,因为

    mov eax, dword ptr [ebx + 0xconst]

编译正确。

是的,我可以绕过代码

    mov eax, offset data1
add eax, ebx
mov eax, [eax]

但是那时有很多代码需要更改。令我困扰的是没有任何警告;

最佳答案

最后,我在 MSDN 论坛上找到了答案。如果您只使用 mov eax, [ebx + data1location],而不是 mov eax, [ebx + offset data1location],它会被正确编译。但是,'offset' 是 MS C++ 编译器应该接受的 MASM 语法的合法关键字。但随后“ebx +”被默默地扔掉了。

关于c - Visual-C++ 内联汇编程序编译不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13514682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com