zoukankan      html  css  js  c++  java
  • 【CSAPP】三、程序的机器级表示

    本章基于两种相关的机器语言:Intel IA32和x86-64,前者注重32位,后者注重64位。

    本章脉络:c汇编机器码之间的关系,数据的表示,控制结构如何实现。运行栈,局部变量的存储,数据结构。

    【一】程序编码

    -O1表示1级optimize,一般第二级优化比较好。

    1、机器级代码

    两种抽象尤为重要:1、机器级程序的格式和行为 --指令集体系结构。2、储存器地址是虚拟的,字节数组。

    机器级代码可控部分:

    程序计数器(pc, %eip)

    整数寄存器文件:8个命名的位置,分别存储32位的值,可以是数据,也可以是地址。

    条件码寄存器 

    【二】数据格式

    字:16位 w

    双字:32位 dw

    四字:64位 qw

    汇编后缀:b:1, w:2, l:4, 浮点数 s:4, l:8 不会引起歧义,浮点数舒勇不同的指令和寄存器

    【三】访问信息

    1、操作数指示符

    除了立即数和寄存器,都要有寻址的操作。

    立即数$0x108, 寄存器%eax

    寄存器寻址直接加括号(%eax),前面加数就是偏移量,Imm(Ep, Ei, s) 即为 M[Imm + R[Ep] + R[Ei] * s]

    2、数据传送指令

    MOV S, D

    后缀有MOVS MOVZ,分别是符号扩展和零扩展

    PUSH %eax (栈指针是规定好的, %esp)

    3、算术和逻辑操作

    leal S, D 将寄存器S中地址的数加载到寄存器D中

    加一、减一、取负、取补

    加、减、乘、异或、或、与

    左移、算术右移、逻辑右移

    4、控制

  • 相关阅读:
    POJ 3669 Meteor Shower(bfs)
    MongoDB 分片的原理、搭建、应用
    Linux下Mongodb安装和启动配置
    目录操作
    一阶段第四次整理(关于滚动条监听的进一步解释)
    HTML DOM 节点介绍(nodeName,nodeValue,nodeType)
    ASP.NET 开发人员应该知道的8个网站
    Java 里快如闪电的线程间通讯
    php-多态
    Winform控件学习-TreeView
  • 原文地址:https://www.cnblogs.com/yesuuu/p/6938102.html
Copyright © 2011-2022 走看看