Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly [-][-]在英特尔x86汇编文档中是什么意思?_Assembly_X86_Machine Code_Opcode - Fatal编程技术网

Assembly [-][-]在英特尔x86汇编文档中是什么意思?

Assembly [-][-]在英特尔x86汇编文档中是什么意思?,assembly,x86,machine-code,opcode,Assembly,X86,Machine Code,Opcode,搜索“英特尔第2A卷文档”只会发现[-][-]的4种用法,并且只会说出一句简短的句子: [-][-]命名法意味着字节后面是a 对于SIB字节,请参考以下内容: 那么,这意味着什么?如何使用它,在它出现的表格中: 我开始了解如何使用此表来理解此表的左下角框,以及它与顶部列标题的关系,但尚未了解此表的其余部分。我想我可以弄清楚这个计算地址的东西是如何工作的,但是[-][-]是什么意思?您是否用寄存器填充--,这样它会像[eax][eax]?或者,我不知道。请帮忙 有哪些指令调用示例可以演示其

搜索“英特尔第2A卷文档”只会发现
[-][-]
的4种用法,并且只会说出一句简短的句子:

[-][-]命名法意味着字节后面是a

对于SIB字节,请参考以下内容:



那么,这意味着什么?如何使用它,在它出现的表格中:

我开始了解如何使用此表来理解此表的左下角框,以及它与顶部列标题的关系,但尚未了解此表的其余部分。我想我可以弄清楚这个计算地址的东西是如何工作的,但是
[-][-]
是什么意思?您是否用寄存器填充
--
,这样它会像
[eax][eax]
?或者,我不知道。请帮忙

有哪些指令调用示例可以演示其用法?

--
是占位符/通配符。该表项告诉您使用该r/m编码为任何索引寻址模式向SIB发送信号

他们似乎使用了一种奇怪的asm级语法,其中2寄存器寻址模式看起来像
[edi][eax]
或其他什么,而不是更现代的标准
[edi+eax]
。尽管我认为MASM确实允许
[edi][eax]


如果您的寻址模式与
[*][*]
模式相匹配(即有2个寄存器),则您使用该项(从而表示存在SIB字节)。

等等,其中也有
[x+y]
的示例,是否有所不同?你是说
[edi][eax]
[edi+eax]
是一样的,但是他们有
[BX+SI]
,比如,为什么他们不写
[*+*]
或者类似的东西,或者
[-+-]
?我猜这是32位的,而
[BX+SI]
是16位的,但仍然是。我想如果你说这是一个奇怪的asm语法,那就是答案。但我不知道为什么这两种形式是不同的。@LancePollard:16位寻址模式是不同的:从来没有SIB字节,所以所有可能的编码都必须打包到R/M字段中的模式中。但就格式而言,
[*+*]
是有意义的。如果我是一名技术作家,负责为英特尔创建此文档,可能不会想到这一点,但它确实有效。他们使用它的方式,其含义非常清楚:需要SIB。即使这包括像
[eax*4]
这样的内容,对缩放寄存器进行编码的唯一选择是将其作为索引(如果没有基,则使用disp32),这意味着SIB字节。