在Visual Studio中,我写道:

mov eax, [edx][ebx][ecx][edi]

但是它组装得很好。

为什么它不是无效的有效地址?

最佳答案

在最新版本的MASM中,这似乎是一个错误。

以以下文件为例:

    .586

_TEXT   SEGMENT USE32
    mov eax, [edx][ebx][ecx][edi]
_TEXT   ENDS
    END

使用MASM 6.11d,将生成以下错误:
t213a.asm(4) : error A2030: multiple index registers not allowed

使用MASM 8.00.50727.42或更高版本时,没有错误,并且该语句汇编为:
00000000: 8B 04 0F           mov         eax,dword ptr [edi+ecx]

因此,[edx][ebx][ecx][edi]不是有效的寻址模式。您正在使用的MASM版本中的错误是应该接受它,而应该将其拒绝为错误。

关于assembly - 为什么Visual Studio会毫无提示地组装mov eax,[edx] [ebx] [ecx] [edi]?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33596266/

10-11 16:41