编译器源码剖析
lurayvis
这个作者很懒,什么都没留下…
展开
-
AS汇编器源码剖析-第1章-Arm操作码
AS汇编器源码剖析-Arm操作码 Arm opcode定义 arm的全部指令定义在aarch64-tbl.h的aarch64_opcode_table,超过1000个。指令以struct aarch64_opcode的格式定义。以下代码是Add/subtract (with carry)部分的指令集定义。 structaarch64_opcodeaarch64_opc原创 2016-08-06 22:14:00 · 2124 阅读 · 0 评论 -
AS汇编器源码剖析-第3章-指令字符的识别
AS汇编器源码剖析-指令字符的识别 汇编器AS读取一个汇编文件后,对文本内容处理后,会逐行进行解析。最基础的部分归结于对一行汇编的编码。assemble_one()是入口函数,实际上调用的是各处理器文件定义的md_assemble()函数。 创建hash表 和通常设想的不一样,md_assemble()并不是通过正则表达式或者精巧的字符分析来讲字符串转化为原创 2016-08-07 00:30:08 · 1225 阅读 · 0 评论 -
AS汇编器源码剖析-第2章-Armoprand操作数
AS汇编器源码剖析-Armoprand操作数 aarch64_operands全集定义操作数oprand在指令手册中都有说明,在代码里全部定义在aarch64_operands[]。 const struct aarch64_operandaarch64_operands[] ={{AARCH64_OPND_CLASS_NIL, "", 0,{0}, ""},{AA原创 2016-08-06 22:41:17 · 1411 阅读 · 0 评论 -
AS汇编器源码剖析-第4章-编译一行汇编
AS汇编器源码剖析ch4-编译一行汇编汇编器AS读取一个汇编文件后,对文本内容处理后,会逐行进行解析。最基础的部分归结于对一行汇编的编码。assemble_one()是入口函数,实际上调用的是各处理器文件定义的md_assemble()函数。 编译一行汇编的主要任务包括3个。至于这一行汇编在整体文件中的影响和处理,比如segment,align,见后期章节解析。1. 指令码原创 2016-08-10 00:18:57 · 1924 阅读 · 0 评论 -
AS汇编器源码剖析-第5章-用eclipse编译调试AS
用eclipse编译调试AS 前面几章讲了最基本的流程,如果要进一步的熟悉代码的流程,用eclipse来单步调试是一个非常有力的手段。Binutils的AS, LD里面的宏不少,分支判断也不少。有了单步调试就能排除这些影响。 一般来讲,目前用binutils的一般是用来交叉编译,因为一般开发人员研究面向X86的编译器其实没有那么大的实用性。虽然binutil原创 2016-09-19 01:00:20 · 1403 阅读 · 0 评论