资源简介
可将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可执行文件!
代码片段和文件信息
#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语言实现https的post和get不依赖任何
- nozzle.cpp
- 红外避障小车程序C语言源码.rar
- C语言的小型通用数据库.rar
- 基于TMS320VC5509 DSP的有源噪声控制系统
- C语言实现宾果消消乐
- C++删除指定文件夹下N天及之前日志文
- 51单片机DIY制作:旋转LED数字显示电子
- C++实现简易文本编辑器
- 如何用VC实现对超长数据库字段操作
- 使用C++实现迷宫游戏
- C语言基于哈希表实现通讯录
- C++实现银行排队系统
- socket多人聊天程序C语言版(一)
- linux环境下模拟实现简单命令解释器
- 万有引力算法c程序
- c语言 根据坐标 截取yuv420p 区域 保存
- 算法精解 的源代码
- stdafx.h头文件
- 基于C语言的流水灯设计
- c语言图形动画课程设计奔跑的小人
- VC++串口操作的代码及文档
- C++课程设计影碟出租管理
- 电力系统潮流计算C语言程序
- 二叉树的插入C语言
- C语言仿真的aloha算法
- RAW格式图像转换为BMP格式
- Visual c++ 网络编程 郑阿奇
- AVR单片机C语言程序设计精粹程序
- 银行家算法源程序包含C语言+C++两种代
评论
共有 条评论