在Turbo C++或Borland C++编程环境下,我们可TCC或BCC行命令把一个C语言的源程序转换成汇编语言的源程序。通过阅读汇编语言程序可以很准确地知道C语言语句的功能是如何实现的,这样,可为将来学习《编译原理》课程中的"寄存器调度"和"代码生成"等相关知识打下良好的基础。
C语言源程序转换的命令格式如下:
TCC -S t1.cpp 或 BCC -S t1.cpp ;假设其文件名为t1.cpp
若命令TCC/BCC不带参数的话,则将显示其使用方法。
下面是C语言程序及其相对应的汇编语言程序,希望读者能逐行对照理解它们语句之间的转换关系,这将能进一步理解高级语言的语句功能。
1、C语言程序清单
#include <stdio.h>
  
int sum(int a, int b, int c)
  
 {
  return (a+b+c);
  
 }
void main()
  
{int a, b, c;
  
 a = b = 12;
  
 c = 32;
  
 printf("%d", sum(a,b,c));
  
}  
2、生成的汇编语言程序清单
| …… ;一系列辅助说明信息 | |
| _TEXT segment byte public 'CODE' ;代码段的开始 | |
| ;int sum(int a, int b, int c) ;C语言语句 | |
| ;{ ;return(a+b+c);  | 
  |
| ;} | |
| ;void main() | |
| ;{int a, b, c; ;局部变量是用堆栈来存储的,请见第7.5.10节 | |
| ; a = b = 12; ;给局部变量赋值 | |
| ; c = 32; | |
| ; printf("%d", sum(a,b,c)); ;调用系统标准函数 | |
| ; } | |
| _TEXT ends ;代码段的结束 | |
| 
_DATA   segment word public 'DATA'   	;数据段的定义 s@ label byte db '%d' db 0 _DATA ends  | 
  |
| 
       
public 	_main          	;下面说明函数的属性,请见第7.6.3节  |