为什么Visual Studio能够无需提醒就汇编mov eax,[edx][ebx][ecx][edi]?

6
在Visual Studio中,我写了:
mov eax, [edx][ebx][ecx][edi]

但是它可以成功编译。

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


你期望 mov eax, [edx][ebx][ecx][edi] 做什么? - user824425
我只是想知道为什么它是正确的有效地址。 - pawel_bolak
1
它无法与masm 6.14.8444汇编。这个指令反汇编成什么? - Michael
1个回答

7

最近版本的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版本存在一个错误,它接受了这个错误,而应该将其拒绝为错误。

谢谢@Ross,我也发现了同样的事情。你比我更快。你有我的点赞。 - Michael Petch
@MichaelPetch 谢谢,如果不是你关于6.14.8444的评论,我就永远不会想到尝试一个旧版本的MASM来查看是否存在回归问题。 - Ross Ridge
2
那是另一个 @Michael ;-) - Michael Petch
1
@MichaelPetch 对不起,Michael。 - Ross Ridge

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接