📄 main.c
字号:
/* this file is for creating a version of EiC which * does not link to its implementation of the * standard C library nor does it use readline. * * * To build this version: * * make -f makefile.ppc * * which makes the executabe seic, (small eic) and seic.sr (an S-record) * */#include <stdio.h>#include <stdlib.h>#include <string.h>#include "eic.h"#include "../module/stdClib/src/stdClib2eic.h" #include "preproc.h"#define str(x) #x#define xstr(x) str(x)#ifdef POWERPCvoid prs(char *str);val_t eic_gets(void);val_t eic_puts(void);val_t eic_getch(void);val_t eic_putch(void);val_t eic_getchq(void);val_t eic_in(void);val_t eic_out(void);val_t eic_load(void);extern char *startstr;static char loadstring[4096]="void puts(char *str);char *gets(char *str);int getch(void);void putch(int ch);int getchq(void);int in(unsigned long addr);void out(unsigned char val, unsigned long addr);int load(char *str);int printf(const char *fmt, ...);int sprintf(char *buf, const char * fmt, ...);int scanf(const char *fmt, ...);int sscanf(const char *str,const char *fmt, ...);typedef unsigned size_t;void *memmove(void * dst, const void * src , size_t n);char *strcpy(char * dst, const char * src);char *strncpy(char * dst, const char * src, size_t n);char *strcat(char * s1, const char * s2);char *strncat(char * s1, const char *s2, size_t n);int memcmp(const void * s1, const void * s2, size_t n);int strcmp(const char * s1, const char * s2);int strcoll(const char * s1, const char * s2);int strncmp(const char * s1, const char *s2, size_t n);size_t strxfrm(char *dst, const char * src, size_t n);void *memchr(const void *s, int c, size_t n);char *strchr(const char *s, int c);size_t strcspn(const char *s, const char *reject);char *strpbrk(const char *s, const char *accept);char *strrchr(const char *s, int c);size_t strspn(const char *s, const char *accept);char *strstr(const char *haystack, const char *needle);char *strtok(char *s, const char *delim);void *memset(void *s, int c, size_t n);char *strerror(int n);size_t strlen(const char *s);char * strrev(char * s);#define RAND_MAX 32767#define EXIT_FAILURE 1#define EXIT_SUCCESS 0#define MB_CUR_MAX 1typedef struct { int quot, rem; }div_t;typedef struct { long quot, rem; }ldiv_t;div_t div(int numer, int denom);ldiv_t ldiv(long int numer, long int denom);void * malloc(size_t n);void * calloc(size_t x, size_t y);void * realloc(void * ptr, size_t n);#define free(x) (free)(&(x));void (free)(void *ptr);#define strtoul(x,y,z) strtol(x,y,z)int rand(void);void srand(unsigned int seed);double strtod(const char *str, char **endptr);long strtol(const char *str, char **endptr,int base);int atoi(const char *s);double atof(const char *str);long atol(const char *s);void abort(void);char * _itoa(int n,char *str, int radix, int mod);char * _ltoa(int n,char *str, int radix, int mod);char *fftoa(double d, char *str, int p, char type, int trunc);#define itoa(x,y,z) _itoa(x,y,z,1)#define utoa(x,y,z) _itoa(x,y,z,2)#define ltoa(x,y,z) _ltoa(x,y,z,1)#define ultoa(x,y,z) _ltoa(x,y,z,2)double acos(double a);double asin(double a);double atan(double a);double atan2(double a, double b);double cos(double a);double sin(double a);double tan(double a);double cosh(double a);double sinh(double a);double tanh(double a);double exp(double a);double frexp(double a, int * b);double ldexp(double a, int b);double log(double a);double log10(double a);double modf(double a, double *b);double pow(double a, double b);double sqrt(double a);double ceil(double a);double fabs(double a);double floor(double a);double fmod(double a, double b);puts(\"\\nDone loading prototypes...\");";#endifint main(int argc, char ** argv){ EiC_init_EiC(); /* the macro PLATFORM * is passed in by the * compiler */ dodefine("_EiC"); dodefine(&(xstr(PLATFORM)[1])); #ifdef PPCLIB prs("Starting EiC...\n"); setvbuf(stdout,NULL,_IONBF,0); EiC_add_builtinfunc("puts",eic_puts); EiC_add_builtinfunc("gets",eic_gets); EiC_add_builtinfunc("putch",eic_putch); EiC_add_builtinfunc("getch",eic_getch); EiC_add_builtinfunc("getchq",eic_getchq); EiC_add_builtinfunc("in",eic_in); EiC_add_builtinfunc("out",eic_out); EiC_add_builtinfunc("load",eic_load); EiC_add_builtinfunc("printf",eic_printf); EiC_add_builtinfunc("sprintf",eic_sprintf); EiC_add_builtinfunc("scanf",eic_scanf); EiC_add_builtinfunc("sscanf",eic_sscanf); EiC_add_builtinfunc("setvbuf",eic_setvbuf); /* string .h */ EiC_add_builtinfunc("memcpy",eic_memcpy); EiC_add_builtinfunc("memmove",eic_memmove); EiC_add_builtinfunc("strcpy",eic_strcpy); EiC_add_builtinfunc("strncpy",eic_strncpy); EiC_add_builtinfunc("strcat",eic_strcat); EiC_add_builtinfunc("strncat",eic_strncat); EiC_add_builtinfunc("memcmp",eic_memcmp); EiC_add_builtinfunc("strcmp",eic_strcmp); EiC_add_builtinfunc("strcoll",eic_strcoll); EiC_add_builtinfunc("strncmp",eic_strncmp); EiC_add_builtinfunc("strxfrm",eic_strxfrm); EiC_add_builtinfunc("memchr",eic_memchr); EiC_add_builtinfunc("strchr",eic_strchr); EiC_add_builtinfunc("strcspn",eic_strcspn); EiC_add_builtinfunc("strpbrk",eic_strpbrk); EiC_add_builtinfunc("strrchr",eic_strrchr); EiC_add_builtinfunc("strspn",eic_strspn); EiC_add_builtinfunc("strstr",eic_strstr); EiC_add_builtinfunc("strtok",eic_strtok); EiC_add_builtinfunc("memset",eic_memset); EiC_add_builtinfunc("strerror",eic_strerror); EiC_add_builtinfunc("strlen",eic_strlen); EiC_add_builtinfunc("strrev", eic_strrev); /* stdlib.h */ EiC_add_builtinfunc("_itoa", eic_itoa); EiC_add_builtinfunc("_ltoa", eic_ltoa); EiC_add_builtinfunc("fftoa", eic_fftoa); EiC_add_builtinfunc("malloc", eic_malloc); EiC_add_builtinfunc("calloc", eic_calloc); EiC_add_builtinfunc("realloc", eic_realloc); EiC_add_builtinfunc("free", eic_free); EiC_add_builtinfunc("strtod", eic_strtod); EiC_add_builtinfunc("strtol", eic_strtol); EiC_add_builtinfunc("strtoul", eic_strtoul); EiC_add_builtinfunc("rand", eic_rand); EiC_add_builtinfunc("srand", eic_srand); EiC_add_builtinfunc("atoi", eic_atoi); EiC_add_builtinfunc("atof", eic_atof); EiC_add_builtinfunc("atol", eic_atol); EiC_add_builtinfunc("abort",eic_exit); EiC_add_builtinfunc("eic_exit",eic_exit); EiC_add_builtinfunc("div",eic_div); EiC_add_builtinfunc("ldiv",eic_ldiv); EiC_add_builtinfunc("acos",eic_acos); EiC_add_builtinfunc("asin",eic_asin); EiC_add_builtinfunc("atan",eic_atan); EiC_add_builtinfunc("atan2",eic_atan2); EiC_add_builtinfunc("cos",eic_cos); EiC_add_builtinfunc("sin",eic_sin); EiC_add_builtinfunc("tan",eic_tan); EiC_add_builtinfunc("cosh",eic_cosh); EiC_add_builtinfunc("sinh",eic_sinh); EiC_add_builtinfunc("tanh",eic_tanh); EiC_add_builtinfunc("exp",eic_exp); EiC_add_builtinfunc("frexp",eic_frexp); EiC_add_builtinfunc("ldexp",eic_ldexp); EiC_add_builtinfunc("log",eic_log); EiC_add_builtinfunc("log10",eic_log10); EiC_add_builtinfunc("modf",eic_modf); EiC_add_builtinfunc("pow",eic_pow); EiC_add_builtinfunc("sqrt",eic_sqrt); EiC_add_builtinfunc("ceil",eic_ceil); EiC_add_builtinfunc("fabs",eic_fabs); EiC_add_builtinfunc("floor",eic_floor); EiC_add_builtinfunc("fmod",eic_fmod); startstr=loadstring; /* load defines */ /* strcat(startstr,"typedef struct {void *p, *sp, *ep;} ptr_t;\n"); strcat(startstr,"typedef struct { ptr_t _ptr; int _cnt; ptr_t _base;\\\n"); strcat(startstr,"unsigned short _flag; short _fd; unsigned long _pid;\\\n"); strcat(startstr,"unsigned _bsize; ptr_t _tmpnam; char _sbuf[4];\\\n"); strcat(startstr,"unsigned _entry; }FILE;\n"); strcat(startstr,"int fgetc(FILE * fp);\n"); strcat(startstr,"int fputc(int c, FILE * fp);\n"); strcat(startstr,"char * fgets(char *s, int n, FILE *fp);\n"); strcat(startstr,"int fputs(const char *s, FILE *fp);\n"); */ #endif EiC_startEiC(argc, argv); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -