美文网首页
计算机系统:笔记三

计算机系统:笔记三

作者: webmrxu | 来源:发表于2017-11-19 16:16 被阅读0次
    1. 将C 代码编译为汇编代码。

    $ gcc -Og -S code.c
    # 产生code.s 汇编文件

    2.将C代码生成目标代码文件。

    $ gcc -Og -c code.c
    # 产生code.o 二进制目标文件

    1. 数据传送指令 mov 类有4条指令组成:
    • movb 传送字节 1字节
    • movw 传送字 2字节
    • movl 传送双字 4字节
    • movq 传送四字 8字节

    计算机进行数据处理时,一次存取、加工和传送的数据长度称为字(word)。一个字通常由一个或多个(一般是字节的整数位)字节构成

    1. C语言中的指针其实就是地址。

    2. 间接引用指针就是将改指针放在一个寄存器中,然后在内存引用中使用这个寄存器。

    3. 通过push 指令操作将数据压入栈中,通过pop指令删除数据。指令只有一个操作数。

    栈可以实现为一个数组,操作总是从数组的一端插入和删除元素,这一端称为栈顶。

    1. 将一个四字值压入栈中,首先要将指针减8。

    四字等于8字节。
    可以理解为,栈数组的长度必须增大8。
    可为什么是减而不是加。 (减法就是特殊加法,相当于X轴,减法就是向左移动一段范围,加法就是向右移动一段范围,但它们都可以取得一段范围的值)。栈向低地址方向增长,所以压栈是减小栈指针的值。

    1. 加载有效地址指令 leaq (load effective address)实际上是movq的变形。它指令的形式是从内存读取数据到寄存器,但实际上它根本没有引用内存。该指令不是从指定位置读取数据,而是将有效地址写入到目的操作数。

    lead 指令能执行加法和有限形式的乘法。

    相关文章

      网友评论

          本文标题:计算机系统:笔记三

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