6.3.4 为函数调用与返回产生汇编代码
在这一小节中,我们来讨论一下如何为函数调用和函数返回生成汇编代码。函数调用对应的中间指令如下所示:
//中间指令的四元式:
让我们先熟悉一下C函数的调用约定CallingConvention,我们需要把参数从右向左入栈(即从argn到arg1依次入栈),不妨记这些参数所占用的总内...
分类:
其他好文 时间:
2015-05-01 09:28:49
阅读次数:
203
6.3.3 为跳转指令产生汇编代码
在这一小节中,我们要为“有条件跳转”、“无条件跳转”和“间接跳转”产生相应的汇编指令。中间指令的四元式如下所示:
(1) 有条件跳转,例如“if (a
////////对应的汇编代码//////////
movl a, %ea...
分类:
其他好文 时间:
2015-04-30 18:12:06
阅读次数:
154
6.3.2 由EmitAssign函数产生算术运算的汇编代码
在这一小节中,我们要讨论的中间指令形如“t1: a+b;”或者“t2:&number”,这些指令用于进行一元或二元算术运算,并把运算结果保存在临时变量t1或者t2中。UCC中间指令的格式如下所示:
// t1: a+b;
// t2: &...
分类:
其他好文 时间:
2015-04-30 14:17:09
阅读次数:
188
6.3.1 由中间指令产生汇编代码的主要流程
在这一小节,我们可把关注的焦点放在“如何把某条中间代码翻译成汇编代码”上。UCC编译器的中间代码是如下所示的四元式,包括运算符和3个操作数。
当然有些中间代码只需要用到opcode和DST就可以了,例如,无条件跳转指令“goto BB2;”就不需要SRC1和SRC2。为了便于汇编代码的生成,UCC编译器在u...
分类:
其他好文 时间:
2015-04-29 21:55:55
阅读次数:
1253
gcc
常用选项
-c 只编译不链接,生成目标文件".o"
-S 只编译不汇编,生成汇编代码
-E 只进行预编译,不做其他处理
-g 在可执行程序中包含标准调试信息
-o file 将file文件指定为输出文件
-v 打印出编译器内部编译各过程的命令行信息和编译器的版本
-I dir 在头文件的搜索路径列表中添加dir目录
gcc库选项列表
-static 进行静态...
分类:
数据库 时间:
2015-04-27 10:03:37
阅读次数:
225
在计算机中,CPU的速度比内存的速度快得多,编译器应尽量有效地利用寄存器资源,减少对内存的不必要访问,从而提高由编译器生成的汇编代码的运行速度。在中间代码生成阶段,UCC编译器用临时变量t来存放形如“t: a+b;”的公共子表达式的值;到了汇编代码生成时,UCC编译器会尽可能地把这些公共子表达式的值存放在寄存器,当需要再次重用时,就可以直接由相应的寄存器中得到。不过,CPU中寄存器的资源是很有限的...
分类:
其他好文 时间:
2015-04-27 09:54:20
阅读次数:
212
6.1 汇编代码生成简介
历经词法分析、语法分析、语义检查和中间代码生成阶段,我们终于来到了“目标代码生成阶段”,由于UCC编译器的目标代码即为32位x86汇编代码,因此我们就把本章称为“汇编代码生成”。UCC编译器中的大部分源代码都适用于Windows和Linux平台,但Windows平台上缺省的汇编器支持Intel风格的x86汇编代码,而Linux平台默认的汇编器则采用AT&T风格的...
分类:
其他好文 时间:
2015-04-26 09:30:07
阅读次数:
185
硬盘主引导扇区的引导程序只占139个字节(不同版本的Fdisk、不同的分区程序写入的主引导记录会不相同,但其基本功能一样),经过反汇编后的引导程序的汇编代码如下:1000:0600 FA CLI ;自举,将000...
分类:
其他好文 时间:
2015-04-23 15:11:55
阅读次数:
248
友坚4412开发板怎样在sourceinsight中使汇编代码高亮显示?4412开发板做ARM嵌入式开发时,有时得整汇编代码,但在SIS里建立PROJECT并ADDTREE的时候,根据默认设置并不会把该TREE里面所有汇编文件都包含进来,默认只加了.inc和.asm后缀的,.s后缀的没有。而且用SIS打开.s的文件..
分类:
其他好文 时间:
2015-04-17 22:31:24
阅读次数:
163
如果你不指定编译成什么文件,gcc默认一步到位,直接生成可执行文件你可以试试以下几个参数-c 只激活预处理,编译,和汇编,也就是他只把程序做成obj文件 例子用法: gcc -c hello.c 他将生成.o的obj文件-S 只激活预处理和编译,就是指把文件编译成为汇编代码。 例子用法 ...
分类:
编程语言 时间:
2015-04-17 21:44:45
阅读次数:
146