资源简介

可将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\link.exe

     文件       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个文件信息

评论

共有 条评论