【由尚德内核编程学习笔记1】AT&T汇编语法

mov %eax , %ebx  源  目的  寄存器前加%
mov $4,%ebx 立即数前加$
mov VALUE,%ebx 符号常数直接引用
mov $VALUE,%ebx 符号地址在符号前加$

movl , movw , movb  操作数长度(long 32位, word 16位,  byte 8位)

*jmp *call  跳转 调用
ljmp  lcall lret 远跳转 远调用 远返回

寻址方式:
section:disp(base,index,scale) 计算方法是:
 base+index*scale+disp


asm("asm satements" : outputs : inputs:registers-modified);
statement中寄存器前要加%%

输出寄存器,汇编代码输入的参数,汇编代码执行中被修改的寄存器
输入和输出寄存器0——9 排序

a ,b,c,d 表示 eax,ebx,ecx,edx
S D 寄存器esi, edi
r 任何寄存器
0  零,和前面寄存器相同位置
m  内存地址


例:
int a1=10,b1=0;
asm("movl %1,%%eax"
:"=a"(b1)
:"b"(a1)
:"%eax");
执行结果: a1放入ebx,ebx放入eax,eax放入b1,故a1=10,b1=10

posted on 2011-03-30 11:21  张小捷  阅读(209)  评论(0编辑  收藏  举报

导航