首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Visual-C++内联汇编程序编译不正确

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

Stack Overflow用户
提问于 2012-11-22 22:22:55
回答 1查看 98关注 0票数 2

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

我有一个类似这样的指令

代码语言:javascript
复制
    ..naked...
    __asm{
    ...
    mov eax, dword ptr [ebx + offset data1]
    ...
    }

真正的问题是它被编译为

代码语言:javascript
复制
    mov eax, [offset data1]

这一行没有编译器警告(/WAll模式),但是代码被改变了很多-想象一下,它被抛出了ebx + part!默默地。它是一个编译器错误还是一个特性?也许我必须指定一些额外的标志?

问题只与偏移量有关,因为

代码语言:javascript
复制
    mov eax, dword ptr [ebx + 0xconst]

是正确编译的。

是的,我可以使用代码

代码语言:javascript
复制
    mov eax, offset data1
    add eax, ebx
    mov eax, [eax]

但是有很多代码需要修改。让我困扰的是没有任何警告;

EN

回答 1

Stack Overflow用户

发布于 2012-11-25 22:28:06

终于,我在MSDN论坛上找到了答案。如果您只使用mov eax,ebx + data1location,而不是mov eax,ebx + offset data1location,它将被正确编译。但是,'offset‘是MASM语法的合法关键字,应该被MS C++编译器接受。然后"ebx +“就被悄悄地扔掉了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13514682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档