区别
AT&T指令:
movl $4, %eax 执行的是将立即数4送入到寄存器eax中;
movl %ebx, %eax 执行的是将寄存器ebx中的值送入寄存器eax中;
movl $values,%eax 表示将values的首地址送入寄存器eax中;
AT&T指令是左向右,intel指令是右向左
Intel:指令 目标, 源
AT&T:指令 源, 目标
同时,intel指令变量直接是变量,at&t指令前面会带着%号
Intel:使用名称,如 eax、ebx 等。
AT&T:使用 % 前缀,如 %eax、%ebx 等。
Intel:直接表示,如 mov eax, 4
AT&T:使用$前缀,如 movl $4, %eax
逻辑
leave指令
mov rsp, rbp
pop rbp
总的来说功能就是rbp变成上一个rbp值,rsp指向返回地址
ret指令
pop rsp指向的值,放进rip
call指令
push 原本下一个要执行的指令
目标函数地址放进rip