英特尔语法是[eax + ebx],什么是AT& T语法等价?

时间:2012-03-03 21:44:11

标签: assembly x86 intel

strlen in assembly的问题 关于汇编中的strlen,但这似乎是用AT& T语法编写的,遗憾的是我的汇编程序不支持。

我只是好奇你如何将语法[eax + ebx]翻译成intel的语法?

所以

4(%eax)     # offset 4

相当于

[eax + 4]

假设偏移值存储在%ebx中。 什么是

的等价性
[eax + ebx]

%ebx(%eax)     # doesn't work!

谢谢,

1 个答案:

答案 0 :(得分:8)

[eax+ebx]应翻译为(%eax,%ebx)

AT& T语法中存储器地址的完整语法是:

offset(%reg1,%reg2,scale)

相当于:

[reg1 + reg2*scale + offset]

offsetscale是常量值,scale必须为1,2,4或8.默认值为0表示偏移量,1表示比例。