资源简介
可将c语言编译成masm32汇编语言,分为4个文件(sca.c,p.c,table.c,g.c,其中sca.c是扫描文件,生成符号流,p.c 是生成语法树,table.c是生成各种变量的表,g.c是直接生成masm32汇编代码),是c编译器,想学编译原理的可以看看,是将c语言编译成masm32汇编,编译好后可以用masm汇编器直接编译成可执行语言。该编译程序可以自举,也就是自己编译自己。当然仅仅3000多行代码,支持绝大多数c语法,但是不支持swich语句,另外不支持float 类型。本打包含有例程,程序源代码,以及masm32汇编器!想学习编译原理跟masm32汇编的朋友可以参考看看!举例说明,比如编译example.c文件,直接在命令行里输入g example.c就可以在屏幕显示汇编后的结果,如果直接编译成文件则在命令行输入g example.c -file=example.asm,则生成example.asm汇编文件,如果要编译成可执行文件则再输入masm example则生成example.exe可执行文件!
![](http://www.nz998.com/pic/71333.jpg)
代码片段和文件信息
#include
#include
#define SIZE 256
//#define MAX(x y) (x) > (y) ? (x) : (y)
void PreBc(char *Pint mint *bmBc)
{
int i;
for (i = 0; i bmBc[i] = m;
for (i = 0; i < m; i++)
bmBc[P[i]] = m-1-i;
for(i=0;i printf(“%d “bmBc[P[i]]);
printf(“\n“);
}
void PreGs(char *Pint mint *bmGs){
int ijk;
int n;
for(n=m-1;n>=0;n--){
i=m-1;
while(i>0){
j=0;
k=i;
while(j0 && P[m-1-j]==P[k-1]){
j++;
k--;
}
if(k==0)
break;
if(j==n && P[m-1-j]!=P[k-1])
break;
i--;
}
bmGs[m-1-n]=m-i;
}
}
void BM(char *Tchar *P){
int i j bmBc[SIZE] bmGs[SIZE]flag;
int mnmax;
m=strlen(P);
n=strlen(T);
PreBc(PmbmBc);
PreGs(PmbmGs);
j = 0;
flag=0;
while(j<=n-m){
i=m-1;
while(i >= 0 && P[i] == T[i + j])
i--;
if (i < 0){
printf(“position:%d\n“ j);
j=j+1;
flag=1;
}
else{
if(bmBc[T[i + j]]- m + 1 + i>bmGs[i])max=bmBc[T[i + j]]- m + 1 + i;
else max=bmGs[i];
j=j+max;
}
}
if(!flag)
printf(“No find.\n“);
}
int main(){
char *T=“abcbabcdaaaaabcdaccbcaabca“;
char P[100];
gets(P);
printf(“%s\n“T);
BM(TP);
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1582 2019-03-02 17:07 compiler\example\bm.c
文件 4905 2019-02-14 15:03 compiler\example\bp.c
文件 3252 2019-01-30 09:08 compiler\example\cal.c
文件 1329 2019-02-03 16:27 compiler\example\filewordsort.c
文件 1633 2019-02-05 11:07 compiler\example\find.c
文件 79 2019-02-06 10:37 compiler\example\hello.c
文件 723 2019-02-01 16:36 compiler\example\loan.c
文件 2533 2019-02-01 15:58 compiler\example\maze.c
文件 1161 2019-02-01 15:59 compiler\example\mm.c
文件 6885 2019-03-02 16:07 compiler\example\pe.c
文件 793 2019-02-06 09:44 compiler\example\qsort.c
文件 300 2019-01-29 09:41 compiler\example\read.c
文件 109 2019-02-06 10:41 compiler\example\str.c
文件 724 2019-02-01 15:21 compiler\example\sunday.c
文件 1191 2019-02-01 15:55 compiler\example\t.c
文件 123 2019-02-01 16:31 compiler\example\win.c
文件 456 2019-03-01 17:06 compiler\example\yhl.c
文件 590 2019-02-03 10:01 compiler\example\zz.c
文件 177664 2019-05-31 11:22 compiler\g.exe
文件 540672 2010-01-25 20:18 compiler\masm\dumppe.exe
文件 252466 2017-10-09 14:22 compiler\masm\gdi32.lib
文件 554484 2017-10-09 14:22 compiler\masm\kernel32.lib
文件 462899 1998-03-19 14:28 compiler\masm\li
文件 9687 2001-07-22 03:31 compiler\masm\ml.err
文件 372736 1999-03-29 15:45 compiler\masm\ml.exe
文件 117520 1998-09-19 19:30 compiler\masm\msdis100.dll
文件 164112 1998-03-19 23:50 compiler\masm\msdis109.dll
文件 157456 1998-06-10 04:50 compiler\masm\mspdb50.dll
文件 434706 2017-10-01 10:13 compiler\masm\msvcrt.lib
文件 438134 2017-10-09 14:22 compiler\masm\user32.lib
............此处省略14个文件信息
- 上一篇:多边形有效边表填充算法
- 下一篇:半精度浮点格式数据运算程序
相关资源
- C++中头文件与源文件的作用详解
- 基于mfc的多线程文件传输
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- C语言代码高亮html输出工具
- 猜数字游戏 c语言代码
- C语言课程设计
- 数字电位器C语言程序
- CCS FFT c语言算法
- 使用C语言编写的病房管理系统
- 通信过程中的RS编译码程序(c语言)
- 利用C++哈希表的方法实现电话号码查
- 计算机二级C语言上机填空,改错,编
- 用回溯法解决八皇后问题C语言实现
- 移木块游戏,可以自编自玩,vc6.0编写
- 简易教务管理系统c语言开发文档
- 操作系统课设 读写者问题 c语言实现
- 小波变换算法 c语言版
- C流程图生成器,用C语言代码 生成C语
- 3des加密算法C语言实现
- 简单的C语言点对点聊天程序
- 单片机c语言源程序(51定时器 八个按
- C++纯文字DOS超小RPG游戏
- 个人日常财务管理系统(C语言)
- MFC数字钟(基于VC6.0)
- c语言电子商务系统
- 小甲鱼C语言课件 源代码
- 将图片转换为C语言数组的程序
- 安科瑞智能电能表MODBUS通讯程序 VC6
- C语言实现的一个内存泄漏检测程序
评论
共有 条评论