Linux内核编程入门(由尚德系列讲座)

Linux内核编程入门(由尚德系列讲座)

5 (16人评价)
  • 课时:(44)

  • 学员:(926)

  • 浏览:(52472)

  • 加入课程

(第一章)att汇编语法格式的笔记

相关课时: 笔记详情:

att汇编语法格式:

操作数顺序

指令 源 目标

 

寄存器引用要在寄存器号前加% 例如:

mov %eax,%ebx

 

立即数前加$,例如:

mov $4,%ebx

变量前加$则表示该变量数值对应的地址

 

操作数长度,参数放在指令后面

b=byte(8bit) w=word(16bit) l=long(32bit) 例如movb

 

绝对转移和调用指令钱要加*

远转移和调用为ljmp/lcall

 

寻址方式:

disp(base,index,scale)=

base +index*scale+disp

 

C语言中的嵌入汇编:

_asm_(_有么有都可以)("asm statements" :=outputs:inputs:registers-modified); ""中的内容可以有多行,之间用;分开。

 

outputs为输出寄存器输出到的变量

inputs为输入寄存器,将变量输入到该寄存器

register-modified:要改变的寄存器

如果要用%则需要加2个%%,例如:

例如movw %1,%%eax;

%1则表示outputs:inputs:registers-modified中的第二个参数

"=a(b1)";"b"(a1);"%eax"则表示输出寄存器eax中的值赋给b1,输入则是把a1中的值赋给ebx 改变的是eax中的值

"a","b","c","d"分别表示eax ebx ecx edx

"S" "D"表示esi,edi "r"任何寄存器

2 2

你感兴趣的课程

5万+浏览/ 1766学员/ 3.8评分
免费
4万+浏览/ 281学员/ 4.5评分
免费