嵌入式培训学习历程第十九天

            汇编呀,,汇编      推荐一本汇编入门书  《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(状态码)

原文地址:https://www.cnblogs.com/cxw825873709/p/3250442.html