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

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

    交叉汇编器

    一、一些主要概念

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

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

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

    二、本汇编器设计要点

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

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

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

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

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

    三、汇编指令格式

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

     

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

     

    四、两趟汇编过程

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

     

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

     

    .asciiz

    .byte

    .word

    Load

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

  • 相关阅读:
    5-1
    浅谈sql中的in与not in,exists与not exists的区别
    理解SQL SERVER中的分区表
    SQLSERVER SQL性能优化
    SQL Server Profiler使用方法
    SQL Server中的三种Join方式
    执行计划
    执行计划sql
    INSERT INTO SELECT
    设计模式学习笔记-单例模式
  • 原文地址:https://www.cnblogs.com/likeyiyy/p/3551556.html
Copyright © 2011-2022 走看看