zoukankan      html  css  js  c++  java
  • 自己动手写编译器、链接器目录结构

    《自己动手写编译器、链接器》
    第1章引言1 1.1HelloWorld编译过程分析1 1.1.1HelloWorld程序源文件1 1.1.2词法分析2 1.1.3语法分析3 1.1.4语义分析3 1.1.5链接器4 1.2SCC编译器简介7 1.2.1SCC编译器架构7 1.2.2SCC编译器开发环境7 1.2.3SCC编译器运行环境8 第2章文法知识10 2.1语言概述10 2.2形式语言11 2.2.1字母表和符号串11 2.2.2文法与语言的形式定义12 2.2.3文法与语言的类型13 2.2.4程序设计语言描述工具15 2.3词法分析方法16 2.3.1词法定义例举17 2.3.2状态转换图17 2.3.3词法分析程序流程图17 2.4语法分析方法18 2.4.1LL分析器18 2.4.2LL(k)文法19 2.4.3LL(1)文法19 2.4.4递归子程序法21 2.4.5文法的等价变换24目录自己动手写编译器、链接器第3章SC语言定义26 3.1SC语言的蓝本选择26 3.1.1K&R C26 3.1.2C8926 3.1.3C9927 3.2SC语言对C89简化原则27 3.3SC语言的字符集27 3.3.1基本字符集28 3.3.2扩展字符集28 3.4SC语言词法定义29 3.4.1关键字29 3.4.2标识符30 3.4.3整数常量31 3.4.4字符常量31 3.4.5字符串常量32 3.4.6运算符及分隔符32 3.4.7注释33 3.5SC语言语法定义33 3.5.1外部定义33 3.5.2语句35 3.5.3表达式39 3.6SC语言与C语言功能对比46 3.6.1关键字46 3.6.2数据类型46 3.6.3存储类型47 3.6.4常量47 3.6.5变量47 3.6.6函数48 3.6.7语句48 3.6.8表达式50 第4章SC语言词法分析52 4.1词法分析任务的官方说法52 4.2单词编码53 4.3词法分析用到的数据结构55 4.3.1动态字符串56 4.3.2动态数组58 4.3.3哈希表61 4.3.4单词表62 4.4错误处理,未雨绸缪67 4.5词法分析过程72 4.5.1词法分析主程序72 4.5.2预处理76 4.5.3解析标识符79 4.5.4解析整数80 4.5.5解析字符串80 4.5.6词法分析流程图82 4.6词法着色84 4.7控制程序85 4.8词法分析成果展示86 第5章SC语言语法分析87 5.1外部定义87 5.1.1翻译单元87 5.1.2外部声明88 5.1.3类型区分符90 5.1.4结构区分符92 5.1.5函数调用约定95 5.1.6结构成员对齐95 5.1.7声明符96 5.1.8初值符100 5.2语句101 5.2.1复合语句102 5.2.2表达式语句103 5.2.3选择语句104 5.2.4循环语句104 5.2.5跳转语句105 5.3表达式107 5.3.1赋值表达式108 5.3.2相等类表达式109 5.3.3关系表达式109 5.3.4加减类表达式110 5.3.5乘除类表达式111 5.3.6一元表达式112 5.3.7后缀表达式113 5.3.8初值表达式114 5.4语法缩进116 5.4.1用到的全局变量及枚举116 5.4.2语法缩进程序117 5.5总控程序118 5.6成果展示119 第6章符号表120 6.1符号表简介121 6.1.1收集符号属性121 6.1.2语义的合法性检查122 6.2符号表用到的主要数据结构123 6.2.1栈结构123 6.2.2符号表结构127 6.2.3数据类型结构132 6.2.4存储类型133 6.3符号表的构造过程134 6.3.1外部声明134 6.3.2类型区分符137 6.3.3结构区分符138 6.3.4声明符144 6.3.5变量初始化149 6.3.6复合语句150 6.3.7sizeof表达式150 6.3.8初等表达式152 6.4控制程序153 6.5成果展示155 第7章生成COFF目标文件157 7.1COFF文件结构157 7.1.1基本概念157 7.1.2总体结构158 7.1.3COFF文件头158 7.1.4节头表161 7.1.5代码节内容168 7.1.6数据节与导入节内容168 7.1.7COFF符号表169 7.1.8COFF字符串表173 7.1.9COFF重定位信息173 7.2生成COFF目标文件175 7.2.1生成节表176 7.2.2生成符号表178 7.2.3生成重定位信息182 7.2.4生成目标文件183 7.3成果展示185 第8章x86机器语言187 8.1x86机器语言简介187 8.2通用指令格式188 8.2.1指令前缀188 8.2.2操作码190 8.2.3ModR/M字节190 8.2.4SIB字节191 8.2.5偏移量与立即数193 8.3x86寄存器193 8.3.1数据寄存器193 8.3.2变址寄存器193 8.3.3指针寄存器194 8.3.4段寄存器194 8.3.5指令指针寄存器194 8.3.6标志寄存器195 8.4指令参考196 8.4.1符号说明196 8.4.2数据传送指令198 8.4.3算术运算指令200 8.4.4逻辑运算指令203 8.4.5控制转移指令205 8.4.6串操作指令208 8.4.7处理器控制指令208 8.5生成x86机器语言208 8.5.1操作数栈209 8.5.2生成通用指令210 8.5.3生成数据传送指令213 8.5.4生成算术与逻辑运算指令217 8.5.5生成控制转移指令221 8.5.6寄存器使用224 8.5.7本章用到的全局变量227 8.6成果展示227 第9章SCC语义分析229 9.1外部定义229 9.1.1声明与函数定义229 9.1.2初值符232 9.1.3函数体234 9.2语句237 9.2.1表达式语句237 9.2.2选择语句 238 9.2.3循环语句 239 9.2.4跳转语句241 9.3表达式 244 9.3.1赋值表达式244 9.3.2相等类表达式245 9.3.3关系表达式246 9.3.4加减类表达248 9.3.5乘除类表达式249 9.3.6一元表达式250 9.3.7后缀表达式253 9.3.8初值表达式257 9.4成果展示259 第10章链接器261 10.1链接方式与库文件261 10.2PE文件格式263 10.2.1总体结构263 10.2.2DOS部分264 10.2.3NT头265 10.2.4节头表272 10.2.5代码节272 10.2.6数据节274 10.2.7导入节274 10.3链接器代码实现278 10.3.1生成PE文件头278 10.3.2加载目标文件281 10.3.3加载引入库文件282 10.3.4解析外部符号285 10.3.5计算节区的RVA地址288 10.3.6重定位符号地址291 10.3.7修正需要重定位的地址292 10.3.8写PE文件293 10.3.9生成EXE文件295 10.4SCC编译器、链接器总控程序297 10.5成果展示301 10.6全书代码架构302 第11章SC语言程序开发304 11.1SC语言程序开发流程304 11.2SCC编译器测试程序304 11.2.1表达式测试304 11.2.2语句测试308 11.2.3结构体测试310 11.2.4函数参数传递测试312 11.2.5字符串测试314 11.2.6全局变量测试315 11.3语言举例316 11.3.1可接收命令行参数的控制台程序316 11.3.2可接收命令行参数的Win32应用程序317 11.3.3HelloWindows窗口程序318 11.3.4文件复制程序323 11.3.5九九乘法表325 11.3.6打印菱形326 11.3.7屏幕捕捉程序328 参考文献336 附录ASC语言文法定义中英文对照表337
  • 相关阅读:
    Neo4j自定义主键策略
    spring cloud Alibaba nacos 整合Neo4j pom 配置
    spring cloud Alibaba nacos 整合Neo4j配置
    若依前端 devtool source-map设置
    基于draw.io的二次开发,文件增加本地以及oss存储
    十多年来从三个容器管理系统中吸取的教训
    java8 CompletableFuture,allOf多实例返回
    CompletableFuture 使用详解
    使用CompletableFuture实现业务服务的异步调用
    [转]uni-app开发踩坑之路之this指向问题
  • 原文地址:https://www.cnblogs.com/boyublog/p/4216966.html
Copyright © 2011-2022 走看看