91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 365KB
    文件類型: .rar
    金幣: 2
    下載: 1 次
    發(fā)布日期: 2021-06-18
  • 語言: C/C++
  • 標(biāo)簽: C/C++??

資源簡介

一個c語言編譯器源碼,由C語言編寫。能成功編譯自身。是學(xué)習(xí)編譯器開發(fā)的好資源。

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#include?“ucc.h“

#define?_P_WAIT?0
#define?UCCDIR?“/usr/local/lib/ucc/“

static?char?*CPPProg[]?=?
{?
“/usr/bin/gcc“?“-U__GNUC__“?“-D_POSIX_SOURCE“?“-D__STRICT_ANSI__“
“-Dunix“?“-Di386“?“-Dlinux“?“-D__unix__“?“-D__i386__“?“-D__linux__“?
“-D__signed__=signed“?“-D_UCC“?“-I“?UCCDIR?“include“?“$1“?“-E“?“$2“?“-o“?“$3“?0?
};
static?char?*CCProg[]?=?
{
UCCDIR?“ucl“?“-ext:.s“?“$1“?“$2“?0?
};
static?char?*ASProg[]?=?
{?
“/usr/bin/as“?“-o“?“$3“?“$1“?“$2“?0?
};
static?char?*LDProg[]?=?
{
“/usr/bin/gcc“?“-o“?“$3“?“$1“?“$2“?UCCDIR?“assert.o“?“-lc“?“-lm“?0?
};
char?*ExtNames[]?=?{?“.c“?“.i“?“.s“?“.o“?“.a;.so“?0?};

static?int?Execute(char?**cmd)
{
int?pid?n?status;

pid?=?fork();
if?(pid?==?-1)
{
fprintf(stderr?“no?more?processes\n“);
return?100;
}
else?if?(pid?==?0)
{
execv(cmd[0]?cmd);
perror(cmd[0]);
fflush(stdout);
exit(100);
}
while?((n?=?wait(&status))?!=?pid?&&?n?!=?-1)
;
if?(n?==?-1)
status?=?-1;
if?(status?&?0xff)
{
fprintf(stderr?“fatal?error?in?%s\n“?cmd[0]);
status?|=?0x100;
}

return?(status?>>?8)?&?0xff;
}

void?SetupToolChain(void)
{
}

int?InvokeProgram(int?oftype)
{
List?p?il?ol;
char?*ofname;
char?**cmd;
int?status?=?0;

switch?(oftype)
{
case?PP_FILE:
for?(p?=?Option.cfiles;?p?!=?NULL;?p?=?p->next)
{
ofname?=?FileName(p->str?“.i“);
PPFiles?=?ListAppend(PPFiles?ofname);
il?=?ListAppend(NULL?p->str);
ol?=?ListAppend(NULL?ofname);
cmd?=?BuildCommand(CPPProg?Option.pflags?il?ol);
status?=?Execute(cmd);
}
Option.pfiles?=?ListCombine(Option.pfiles?PPFiles);
break;

case?ASM_FILE:
if?(Option.pfiles?==?NULL)
return?0;

for?(p?=?Option.aflags?Option.aflags?=?NULL;?p?!=?NULL;?p?=?p->next)
{
Option.aflags?=?ListCombine(Option.aflags?ParseOption(p->str?+?4));
}
for?(p?=?Option.pfiles;?p?!=?NULL;?p?=?p->next)
{
ASMFiles?=?ListAppend(ASMFiles?FileName(p->str?“.s“));
}
Option.afiles?=?ListCombine(Option.afiles?ASMFiles);
cmd?=?BuildCommand(CCProg?Option.cflags?Option.pfiles?ASMFiles);
status?=?Execute(cmd);
break;

case?OBJ_FILE:
for?(p?=?Option.afiles;?p?!=?NULL;?p?=?p->next)
{
ofname?=?FileName(p->str?“.o“);
OBJFiles?=?ListAppend(OBJFiles?ofname);
il?=?ListAppend(NULL?p->str);
ol?=?ListAppend(NULL?ofname);
cmd?=?BuildCommand(ASProg?Option.aflags?il?ol);
status?=?Execute(cmd);
}
Option.ofiles?=?ListCombine(Option.ofiles?OBJFiles);
break;

case?LIB_FILE:
return?0;

case?EXE_FILE:
if?(Option.ofiles?==?NULL)
return?0;

if?(Option.out?==?NULL)
Option.out?=?“a.out“;
cmd?=?BuildCommand(LDProg?Option.lflags?Option.linput?ListAppend(NULL?Option.out));
status?=?Execute(cmd);
break;
}

return?status;
}


?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件????????463??2008-06-16?14:36??ucc162\ucc\ChangeLog

?????文件?????????69??2008-11-21?18:22??ucc162\ucc\COPYRIGHT

?????文件????????162??2008-11-10?16:16??ucc162\ucc\COPYRIGHT~

?????文件?????227013??2008-05-14?11:13??ucc162\ucc\doc\UC?Internal(chn).pdf

?????文件?????137607??2008-05-14?11:13??ucc162\ucc\doc\UCC?Internal.pdf

?????文件???????4319??2008-05-14?11:13??ucc162\ucc\doc\UCC?User?Manual(chn).txt

?????文件???????5938??2008-05-14?11:13??ucc162\ucc\doc\UCC?User?Manual.txt

?????文件???????2955??2008-05-14?11:13??ucc162\ucc\driver\linux.c

?????文件????????115??2008-05-14?11:13??ucc162\ucc\driver\Makefile

?????文件????????175??2008-05-14?11:13??ucc162\ucc\driver\Makefile.win

?????文件???????7261??2008-05-14?11:13??ucc162\ucc\driver\ucc.c

?????文件????????845??2008-05-14?11:13??ucc162\ucc\driver\ucc.h

?????文件???????3274??2008-05-14?11:13??ucc162\ucc\driver\win32.c

?????文件??????17719??2007-08-28?22:31??ucc162\ucc\GPL.txt

?????文件????????292??2008-05-14?11:13??ucc162\ucc\Makefile

?????文件????????385??2008-05-14?11:13??ucc162\ucc\Makefile.win

?????文件????????157??2008-05-14?11:13??ucc162\ucc\REAMDE.txt

?????文件???????1822??2008-06-06?10:07??ucc162\ucc\ucl\alloc.c

?????文件????????577??2008-05-14?11:12??ucc162\ucc\ucl\alloc.h

?????文件????????389??2008-06-10?14:46??ucc162\ucc\ucl\assert.c

?????文件???????1223??2008-06-10?14:46??ucc162\ucc\ucl\ast.c

?????文件???????2570??2008-05-14?11:12??ucc162\ucc\ucl\ast.h

?????文件????????417??2008-05-14?11:12??ucc162\ucc\ucl\config.h

?????文件??????22643??2008-06-06?13:46??ucc162\ucc\ucl\decl.c

?????文件???????3209??2008-05-14?11:12??ucc162\ucc\ucl\decl.h

?????文件??????29697??2008-06-06?13:52??ucc162\ucc\ucl\declchk.c

?????文件???????8037??2008-05-14?11:12??ucc162\ucc\ucl\dumpast.c

?????文件???????3672??2008-06-06?14:34??ucc162\ucc\ucl\emit.c

?????文件????????812??2008-05-14?11:12??ucc162\ucc\ucl\error.c

?????文件????????196??2008-05-14?11:12??ucc162\ucc\ucl\error.h

............此處省略62個文件信息

評論

共有 條評論