我有这个装配线:
cmpb $0x0,(%rax,%rcx,1)
Run Code Online (Sandbox Code Playgroud)
现在,根据那里的引用,cmpb立即比较两个字节.所以它将0与0进行比较(%rax,%rcx,1).有人可以解释第二个论点是什么/做什么?
谢谢!
这是AT&T的语法
cmp BYTE PTR [rax+rcx*1], 0
Run Code Online (Sandbox Code Playgroud)
所以它计算地址使用rax + rcx,取消引用它以获得一个b,然后 c o mp是数字0.
此类内存操作数的一般语法是:
disp(base,offset,mult)
Run Code Online (Sandbox Code Playgroud)
它给你的地址:
base + disp + offset*mult
Run Code Online (Sandbox Code Playgroud)
所以在你的情况下(disp为0),cmpb比较0和存储在的值:
%rax + (%rcx * 1)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9818 次 |
| 最近记录: |