美文网首页
汇编笔记

汇编笔记

作者: 燃烧吧hjc | 来源:发表于2017-07-20 10:56 被阅读0次

    ## 前言

    最近在看一些关于linux startup的东西,对于其中使用到的AT&T的汇编语法有点陌生,所以写下这篇文章来帮助自己和更多的人了解一些常见的AT&T汇编的语法。

    因为之前看过一段时间的汇编语法,所以并不会对其中的语法有过多的深入(主要是自己学的还不够好,大大的羞愧),仅针对自己感兴趣的方面,如果有同学对其中的部分感兴趣或者想给予扩充,非常欢迎!(你问我支不支持,我是支持滴!)

    ## 学习环境

    因为自己平时主要是使用Mac进行编程,所以文章中如果出现部分示例,仅仅确保在Mac的环境中能够正常运行(周知~)。如果有热心的同学能够对不同的环境下的运行结果进行反馈,也是欢迎的(我是认真的~)。

    ## 汇编常用的语法

    ### section directive

    1. data section

    用来声明程序中用来存储数据的内存区域;这个区域在声明之后不能被扩充,在程序中全局为static。

    2. bss section

    bss也是静态内存区域,包含在程序中定义的数据缓冲,这段内存区域的独特之处是使用了0进行填充。

    3. text section

    这段内存区域用来存储指令代码,这段区域是固定的。

    ### register

    1. EAX

    累加器,用来进行加法运算,存储结果。

    2. EBX

    指向数据内存区域中的数据指针。

    3. ECX

    string和循环操作的计数器。

    4. EDX

    I/O指针。

    5. EDI

    指向string操作目的地址的数据指针。

    6. ESI

    指向string操作源地址的数据指针。

    7. ESP

    栈指针。

    8. EBP

    栈数据指针。

    ### segment registers

    1. CS

    代码段,CS寄存器中包含了指向内存中代码段的指针,代码段是内存中指令代码存储的地方。处理器基于CS寄存器的值从内存中获取指令代码,而相关的偏移量则存储在EIP指令指针寄存器当中。

    2. DS

    数据段,DS、ES、FS、GS均指向数据段。使用这4种不同的数据段,可以帮助程序分离不同的数据对象,使得他们直接没有交集。

    3. SS

    堆栈段,SS寄存器当中包含了指向内存中堆栈段的指针。栈中包含了程序中传递给函数的数据。

    4. ES

    5. FS

    6. GS

    ### instruction pointer register

    Instruction pointer register(EIP, 指令指针寄存器)有时也被称之为程序计数器,指向下一个要被执行的指令代码。通常情况下,不能直接去修改EIP中的值,可以通过jump等指令的方式间接的修改EIP中的值,并将下一个指令代码进行cache。

    ### control register

    Control register在x86系列中包含CR0-7,在x86_64中则额外增加了EFER、CR8这两个控制寄存器。通过控制寄存器,可以决定处理器的操作模式、当前执行任务的特性等。

    在通常情况下,不能够直接获取到控制寄存器的数值。需要将控制寄存器的数值转到通用寄存器当中,才能获取到;如果希望对控制寄存器进行赋值,则需要将数值转移到通用寄存器当中,然后将通用寄存器的值赋给控制寄存器。

    ### flags

    通过flag来表明一个程序是否被正确执行了。

    按照功能,flag被分为以下几种:

    1. Status flags

    被用来标识算数操作的结果。

    |flag      |bit        |name            |describe|

    | -------------|:--------------:|:--------------:|:--------------:|

    |CF|0|Carry flag|在算术运算中,数字溢出时使用|

    |PF|2|Parity flag|奇偶校验符|

    |AF|4|Adjust flag|类似于十进制加减法,在进位或者借位的时候使用|

    |ZF|6|Zero flag|当一个操作的结果为0时,此标识位置为1|

    |SF|7|Sign flag||

    2. Control flags

    3. System flags

    ## 未完待续~~

    相关文章

      网友评论

          本文标题:汇编笔记

          本文链接:https://www.haomeiwen.com/subject/pghiattx.html