AT&T汇编格式与Intel汇编格式区别(根据由尚德视频教程整理)
来源:互联网 发布:影视后期剪辑软件界面 编辑:程序博客网 时间:2024/05/01 01:47
1. 寄存器引用
引用寄存器要在寄存器号前加%,如mov %eax,%ebx
2. 操作数顺序
操作数排列是从源(左)到目的(右),如
Mov %eax(源),%ebx(目的)
3. 常数/立即数的格式
使用立即数,要在数前面加$,,如mov $4,%ebx
符号常数直接引用如mov value ,%ebx
引用符号地址在符号前加$,如mov $value,%ebx
4. 操作数的长度
操作数的长度用加在指令后的符号表示
b(byte),w(word),l(long)如movw %eax,%ebx
5. 绝对转移和调用指令中的操作数
在AT&T汇编格式中,绝对转移和调用指令(jmp/call)的操作数前要加上“*”做前缀
6. 绝对转移和调用指令
远转移指令和远调用指令的操作码,在AT&T汇编格式中为“ljmp”和”lcall”,而在intel汇编格式中则为“jmp far”和“call far”。
AT&T 格式
ljmp $section,$offset
lcall $section,$offset
Intel格式
Jmp far section:offset
Call far section:offset
7. 远程返回指令
lret $statck_adjust
ret far stack_adjust
8. 寻址方式
Section:disp(base,index,scale)表示,计算方法是:
Base + index*scale + disp
Section:[base + index*scale + disp]
movl -4(%ebp),%eax mov eab,[ebp – 4]
movl array(,%eax,4),%eax mov eax,[eax*4 + array]
movw array(%ebx,%eax,4),%cx mov cx,[ebx + 4*eax + array]
movb $4,%fs:(%eax) mov fs:eax,4
9. _asm_(“asm statements”:outputs:inputs:register-modified);
10. _asm_(“pushl %%eax /n/t”
“mov $0,%%eax /n/t”
“popl %%eax”);
int seg;
char addr;
{register char_res:/
asm(“push %%fs/n/t”
“movw %%ax,%%fs/n/t”
Movb %%fs:%2,%%al/n/t”
Pop %%fs”
:"=a"(_res):"0”(seg):”m”(*(addr)));/
_res;}
说明:
0:表示与前一个寄存器相同的寄存器
addr:前面定义的字符变量
seg:前面定义的整型变量
m:前面定义的变量???
用C语言描述:
eax = seg;
m这段没听明白
int main(){
int a1 = 10,b1 = 0;
_asm_(“movl %1,%%eax,;//n//r”
“movl %%eax,%%ecx;”
:”=a”(b1)
:”b”(a1)
:”%eax”);
printf(“Result:%d,%d//n”,a1,b1);}
用C语言来描述如下:
输入:ebx = a1;
输出:b1 = eax;
汇编流程:
eax = ebx = a1;
ecx = eax;
“a”,”b”,”c”,”d”分别表示寄存器eax,ebx,ecx,edx
“S”和“D”表示寄存器esi,edi
“r”表示任何寄存器
- AT&T汇编格式与Intel汇编格式区别(根据由尚德视频教程整理)
- AT&T汇编格式与Intel汇编格式的比较
- AT&T汇编格式与Intel汇编格式的比较
- AT&T汇编格式与Intel汇编格式的比较
- AT&T汇编格式与Intel汇编格式的比较
- AT&T汇编格式与Intel汇编格式的比较
- AT&T与Intel格式的汇编语法
- AT&T汇编格式
- AT&&T汇编格式
- AT&T汇编格式
- AT&T格式汇编
- AT&T汇编格式
- AT&T汇编格式
- AT&T汇编与Intel汇编的一些区别
- AT&T与INTER汇编格式解析
- AT&T汇编和Intel汇编区别
- AT&T 汇编语法格式
- AT&T汇编语法格式
- 女孩的心,男孩你懂吗?
- C语言取绝对值方法整理
- pku 3356 AGTC
- 建立团队信任的五种方法(摘自Infoq.com)
- 如果要linux有市场应该怎么做
- AT&T汇编格式与Intel汇编格式区别(根据由尚德视频教程整理)
- List.Contains实现对比
- JAVA连接各种数据库的实例
- Oracle物化视图建立方法
- 有用的链接
- 坚持,从每一天开始
- jQuery对select的操作
- 明晰C++内存分配的五种方法的区别
- 创建chroot环境