CC386.P
上传用户:hlzzc88
上传日期:2007-01-06
资源大小:220k
文件大小:6k
源码类别:

编译器/解释器

开发平台:

Others

  1. /* Protogen Version 1.00 Saturday May 31, 1997  17:24:45 */
  2.                              /* Gexpr386.c */
  3. int chksize(int lsize, int rsize);
  4. AMODE *fstack(void);
  5. AMODE *make_muldivval(AMODE *ap);
  6. void make_floatconst(AMODE *ap, int size);
  7. AMODE    *make_label(int lab);
  8. AMODE    *make_immed(long i);
  9. AMODE    *make_immedt(long i, int size);
  10. AMODE    *make_offset(ENODE *node);
  11. AMODE *make_stack(int number);
  12. void make_legal(AMODE *ap,int flags,int size);
  13. void bit_legal(AMODE *ap,ENODE *node, int size);
  14. AMODE *get_bitval(AMODE *ap,ENODE *node, int size);
  15. void bit_move(AMODE *ap2, AMODE *ap1, ENODE *node, int flags, int sizein, int sizeout);
  16. void do_extend(AMODE *ap,int isize,int osize,int flags);
  17. int     isshort(ENODE *node);
  18. int     isbyte(ENODE *node);
  19. AMODE    *gen_index(ENODE *node);
  20. AMODE    *gen_deref(ENODE *node, int flags,int size);
  21. AMODE    *gen_unary(ENODE *node,int flags,int size,int op, int fop);
  22. AMODE    *gen_binary(ENODE *node,int flags,int size,int op, int fop);
  23. AMODE    *gen_xbin(ENODE *node,int flags,int size,int op, int fop);
  24. void doshift(AMODE *ap1, AMODE *ap2, int size, int op);
  25. AMODE    *gen_shift(ENODE *node, int flags, int size, int op);
  26. void dodiv(AMODE *ap1, AMODE *ap2, int size, int op,int modflag);
  27. void domul(AMODE *ap1, AMODE *ap2, int size, int op);
  28. AMODE    *gen_modiv(ENODE *node, int flags, int size, int op, int modflag);
  29. void swap_nodes(ENODE *node);
  30. AMODE * gen_pdiv(ENODE *node, int flags, int size);
  31. AMODE * gen_pmul(ENODE *node, int flags, int size);
  32. AMODE    *gen_mul(ENODE *node, int flags, int size, int op);
  33. AMODE    *gen_hook(ENODE *node, int flags, int size);
  34. AMODE    *gen_asadd(ENODE *node, int flags, int size, int op, int fop);
  35. AMODE    *gen_aslogic(ENODE *node, int flags, int size, int op);
  36. AMODE *gen_asshift(ENODE *node, int flags, int size, int op);
  37. AMODE    *gen_asmul(ENODE *node, int flags, int size,int op);
  38. AMODE    *gen_asmodiv(ENODE *node, int flags, int size, int op, int modflag);
  39. AMODE *gen_moveblock(ENODE *node, int flags, int size)      ;
  40. AMODE    *gen_assign(ENODE *node, int flags, int size);
  41. AMODE    *gen_refassign(ENODE *node, int flags, int size);
  42. AMODE    *gen_aincdec(ENODE *node, int flags, int size, int op);
  43. int push_param(ENODE *ep, int size);
  44. int push_stackblock(ENODE *ep);
  45. int     gen_parms(ENODE *plist,int size);
  46. AMODE    *gen_fcall(ENODE *node,int flags, int size);
  47. AMODE    *gen_pfcall(ENODE *node,int flags, int size);
  48. AMODE    *gen_expr(ENODE *node, int flags, int size);
  49. int     natural_size(ENODE *node);
  50. void gen_compare(ENODE *node, int btype1, int btype2, int btype3, int btype4, int label);
  51. void truejp(ENODE *node, int label);
  52. void falsejp(ENODE *node, int label);
  53.                              /* Gstmt386.c */
  54. AMODE    *makedreg(int r);
  55. AMODE    *makefreg(int r);
  56. AMODE    *make_direct(int i);
  57. AMODE    *make_strlab(char *s);
  58. void genwhile(SNODE *stmt);
  59. void gen_for(SNODE *stmt);
  60. void genif(SNODE *stmt);
  61. void gendo(SNODE *stmt);
  62. AMODE *set_symbol(char *name,int flag);
  63. void call_library(char *lib_name);
  64. int analyzeswitch(SNODE *stmt);
  65. void bingen(int lower, int avg, int higher,AMODE *ap1, int deflab, int size,long * switchids,int * switchlabels,int *switchbinlabels);
  66. void genbinaryswitch(SNODE *stmt, int deflab);
  67. void gencompactswitch(SNODE *stmt, int deflab);
  68. void gencase(SNODE *stmt);
  69. void genxswitch(SNODE *stmt);
  70. void genreturn(SNODE *stmt, int flag);
  71. void genstmt(SNODE *stmt);
  72. void scppinit(void);
  73. void genfunc(SNODE *stmt);
  74.                              /* Outas386.c */
  75. void outcodeini(void);
  76. void nl(void);
  77. void outop(char *name);
  78. void putop(enum e_op op);
  79. void putconst(ENODE *offset);
  80. void putlen(int l);
  81. void putsizedreg(char *string, int reg, int size);
  82. void pointersize(int size);
  83. void putseg(int seg, int usecolon); /* PROTOTYPE */
  84. void putamode(AMODE *ap);
  85. void put_code(OCODE *cd);
  86. void gen_strlab(SYM *s);
  87. void put_label(int lab);
  88. void put_staticlabel(long label);
  89. void genfloat(float val);
  90. void gendouble(double val);
  91. void genlongdouble(double val);
  92. int genstring(char *str, int uselong);
  93. void genbyte(long val);
  94. void genword(long val);
  95. void genlong(long val);
  96. void gensrref(SYM *sp, int val);
  97. void genref(SYM *sp,int offset);
  98. void genpcref(SYM *sp,int offset);
  99. void genstorage(int nbytes);
  100. void gen_labref(int n);
  101. int     stringlit(char *s, int uselong);
  102. void dumplits(void);
  103. void exitseg(void);
  104. void cseg(void);
  105. void dseg(void);
  106. void bssseg(void);
  107. void startupseg(void);
  108. void rundownseg(void);
  109. void cppseg(void);
  110. void gen_virtual(char *name);
  111. void gen_endvirtual(char *name);
  112. void align(int size);
  113. void init_muldivval(void);
  114. void queue_muldivval(int label, long number);
  115. void queue_floatval(int label, double number, int size);
  116. void dump_muldivval(void);
  117. void asm_header(void);
  118. void globaldef(SYM *sp);
  119. void putexterns(void);
  120.                               /* Peep386.c */
  121. void peepini(void);
  122. AMODE    *copy_addr(AMODE *ap);
  123. void gen_code(int op,int len,AMODE *ap1,AMODE *ap2);
  124. void gen_codelab(SYM *lab);
  125. void gen_branch(int op,int len, AMODE *ap1);
  126. void gen_line(SNODE *stmt);
  127. void gen_codef(int op, int len, AMODE *ap1, AMODE *ap2);
  128. void gen_code2(int op, int len, int len2, AMODE *ap1, AMODE *ap2);
  129. void add_peep(OCODE *new);
  130. void gen_label(int labno);
  131. void flush_peep(void);
  132. void peep_add(OCODE *ip);
  133. void peep_sub(OCODE *ip);
  134. void peep_move(OCODE *ip);
  135. void peep_or(OCODE *ip);
  136. void peep_uctran(OCODE *ip);
  137. void peep_label(OCODE *ip);
  138. int equal_address(AMODE *ap1,AMODE *ap2);
  139. void opt3(void);
  140.                               /* Reg386.c */
  141. void regini(void);
  142. void gen_push(int reg, int rmode, int flag);
  143. void gen_pop(int reg, int rmode, int flag);
  144. void pushregs(unsigned mask);
  145. void popregs(unsigned mask);
  146. void initstack(void);
  147. void mark(void);
  148. void release(void);
  149. AMODE    *temp_data(void);
  150. void freedata(int dreg);
  151. void freeaddr(int areg);
  152. void freeop(AMODE *ap);
  153.                                /* An386.c */
  154. void reserveregs(int *datareg, int *addreg, int *floatreg);
  155. void allocate(int datareg, int addreg, int floatreg, SNODE *block );
  156.                               /* Conf386.c */
  157. int confcodegen(char s, int bool);
  158. void confsetup(void);
  159. int     alignment(int type, TYP *tp);
  160. int getalign(int sc, TYP *tp);
  161. long getautoval(long val);
  162. funcvaluesize(int size);
  163. /* Protogen Version 1.00 Saturday May 31, 1997  17:24:47 */
  164.                               /* Inasm68.c */
  165. void inasmini(void);
  166. SNODE *asm_statement (int shortfin);