zoukankan      html  css  js  c++  java
  • 从零开始打造我的计算机系统【交叉汇编器】

    从零开始打造我的计算机系统

    交叉汇编器

    一、一些主要概念

    如同所有书中介绍的那样,汇编源文件经过汇编之后生成目标文件,目标文件经过链接器链接之后生成可执行文件,所以我们做如下的描述。

    目标文件:如同a.out的文件格式,有文件头,文本区,数据区,文本重定位区,数据重定位去,符号表,字符串表。

    可执行文件:除了动态链接之外,一个可执行文件不包含任何重定位信息,也不要符号表。只有文件头,文本区,数据区。

    二、本汇编器设计要点

    由于时间有限,所以本汇编器不再支持多源文件汇编。

    只有一个汇编源文件,没有静态库,也没有动态库,汇编器采用两趟汇编器。

    第一趟给所有的标号记载LC地址。

    第二趟汇编成二进制代码。

    生成的代码之中不应该包含任何没有解析的符号,也没有重定位信息,生成的目标代码加载到0x000010000地方。本编译器仅仅是作为实验用途。

    三、汇编指令格式

    汇编指令由 标号,操作码,目的操作数,源操作数,源操作数,注释五个部分组成。

     

    无论文本区,数据区的标号都要以冒号显示。

     

    四、两趟汇编过程

    第一趟汇编:记录所有的标号,并且记录下标号地址。

     

    第二趟汇编:生成二进制文件,所有未解析的引用视为错误,共用了四个伪指令,分别如下:

     

    .asciiz

    .byte

    .word

    Load

    数据区,和代码区都是从低地址到高地址,记住这一点。

  • 相关阅读:
    正则表达式学习1
    SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
    (转)DBUS基础知识
    WakeLock的使用
    观察者模式
    Notification的使用
    Head First 设计模式之入门
    (转)Android WebView总结
    书架也是一根筋
    PendingIntent分析
  • 原文地址:https://www.cnblogs.com/likeyiyy/p/3551556.html
Copyright © 2011-2022 走看看