汇编呀,,汇编 推荐一本汇编入门书 《Programming from the ground up》
1.wget 非交互式的网络下载工具
2.Linux程序正常退出,返回0, 否则返回非0
3. 汇编使用'#'注释
4.
software(user space) | system call |
os(cernel space) | |
diver | |
hardware |
5.中断 硬件中断和软件中断两种。
system call 中断号:0x80
6. 在汇编中
$1 :表示数字1
1 : 表示地址1
movl :表示mov4个字节的内容
.section .data :定义一段空间放数据
.section .text : 定义代码段
.section .debug : 用于调试的空间
.globl _start : 定义全局的_start
Linux 下,所有以%开头的都是寄存器
汇编器 as 链接器 :ld
链接主要有两个作用 :
(1). 修改目标文件中的信息,对地址进行重定位
(2). 把多个目标文件合并成一个可执行文件
以.开头的名称是汇编指示或伪操作
7.符号在汇编中代表一个地址
8.x86的通用寄存器 : eax, ebx, ecx, edx, edi, esi,
x86的特殊寄存器 : ebp(栈基), esp(栈顶), eip(指令), eflags(标志)
9.exit(int) : 只使用低8位去保存退出值
10.寻址方式
ADDRESS_OR_OFFSET(%BASE_OR_OFFSET, %INDEX, MULTIPLIER)
类似于 A(B, C, D)
计算公式 : A + B + C + D
直接寻址: 只使用 ADDRESS_OR_OFFSET
变址寻址 : 用于访问数组元素比较方便
间接寻址 : 只使用BASE_OR_OFFSET寻址
基址寻址 : 只是用ADDRESS_OR_OFFSET和BASE_OR_OFFSET寻址
立即数寻址: 指令中有一个操作数是立即数
寄存器寻址: 指令中有一个操作数是寄存器
11.
在Linux上 是ELF 文件
在Windows上是 PE
12. ELF格式 有三种不同的类型
可重定位的目标文件(Relocatable,或者Object File)
可执行文件(Executable)
共享库(Shared Object,或者Shared Library)
扩展 : core文件 发生段错误时生成的文件
13. File :查看文件类型
14. hexdump : 把目标文件的字节全部打印出来
15.objdump -d : 查看目标文件反汇编的结果
16. readelf
-h : 查看file -header
-S : section-headers
-s : 显示符号表
推荐编译器相关的书籍 《linker and loader》《程序员的自我修养》
英语 : index register (索引寄存器) loop(循环) values(值) status code(状态码)