📄 iexpr.p
字号:
/* Protogen Version 1.00 Sunday December 21, 1997 20:07:32 */
/* Iflow.c */
void flows_and_doms(void);
/* Iexpr.c */
int chksize(int lsize, int rsize);
IMODE *make_imaddress(ENODE *node, int size);
IMODE *make_imval(enum e_node type, SYM *sp);
ENODE *makeenimode(SYM *sp);
IMODE *make_bf(ENODE *node, IMODE *ap, int size);
IMODE *make_immed(long i);
IMODE *make_offset(ENODE *node);
IMODE *genasn(ENODE *node, int size);
IMODE *indnode(IMODE *ap1, int size);
IMODE *gen_deref(ENODE *node, int flags,int size);
IMODE *gen_unary( ENODE *node,int flags,int size,int op);
IMODE *gen_binary( ENODE *node,int flags,int size,int op);
IMODE * gen_pdiv( ENODE *node, int flags, int size);
IMODE * gen_pmul( ENODE *node, int flags, int size);
IMODE *gen_hook( ENODE *node, int flags, int size);
IMODE *gen_asbin(ENODE *node, int flags, int size, int op);
IMODE *gen_moveblock(ENODE *node, int flags, int size);
IMODE *gen_assign( ENODE *node, int flags, int size,int ref);
IMODE *gen_aincdec( ENODE *node, int flags, int size, int op);
int push_param(ENODE *ep,int size);
int push_stackblock(ENODE *ep);
int gen_parms(ENODE *plist,int size);
IMODE *gen_fcall( ENODE *node,int flags, int size);
IMODE *gen_pfcall( ENODE *node,int flags, int size);
IMODE *gen_expr(ENODE *node, int flags, int size);
IMODE *gen_void(ENODE *node) ;
int natural_size(ENODE *node);
void gen_compare(ENODE *node, int btype, int label);
IMODE *gen_relat(ENODE *node) ;
void truejp(ENODE *node, int label);
void falsejp(ENODE *node, int label);
/* Iout.c */
void outcodeini(void);
void putconst(ENODE *offset);
void putlen(int l);
void putamode(IMODE *ap);
void put_code(QUAD *q);
void rewrite_icode(void);
void gen_strlab(SYM *sp);
void put_label(int lab);
void put_staticlabel(long label);
void genfloat(float val);
void gendouble(double val);
void genlongdouble(long double val);
void genbyte(long val);
void genword(long val);
void genlong(long val);
void genaddress(char *string);
void gensrref(char *name,int val);
void genref(SYM *sp,int offset);
void genpcref(SYM *sp,int offset);
void genstorage(int nbytes);
void gen_labref(int n);
int stringlit(char *s, int uselong,int len);
void dumplits(void);
void nl(void);
void cseg(void);
void dseg(void);
void bssseg(void);
void startupseg(void);
void rundownseg(void);
void cppseg(void);
void xstringseg(void);
void xconstseg(void);
void gen_virtual(SYM *sp, int data);
void gen_endvirtual(SYM *sp);
void asm_header(char *name, char*version);
void globaldef(SYM *sp);
void putexterns(void);
/* Istmt.c */
void genstmtini(void);
IMODE *tempreg(int size, int mode);
IMODE *make_direct(int i);
IMODE *make_strlab(char *s);
void genwhile(SNODE *stmt);
void gen_for(SNODE *stmt);
void genif(SNODE *stmt);
void gendo(SNODE *stmt);
void gen_genword(SNODE *stmt);
IMODE *set_symbol(char *name, int isproc);
IMODE *call_library(char *lib_name,int size);
int analyzeswitch(SNODE *stmt);
void gencompactswitch(SNODE *stmt, struct cases *cs) ;
void genxswitch(SNODE *stmt);
void genreturn(SNODE *stmt,int flag);
void genstmt(SNODE *stmt);
void genfunc(SNODE *stmt);
/* Iconf.c */
void confsetup(void);
int confcodegen(char s, int bool);
int confcg(char ch, int bool);
int alignment(int sc, TYP *tp);
int getalign(int sc, TYP *tp);
long getautoval(long val);
funcvaluesize(int size);
/* Ipeep.c */
void peepini(void);
void kill_labeledgoto(QUAD *head);
void kill_jumpover(QUAD *head);
void peep_icode(QUAD *head);
/* Iconst.c */
void badconst(void);
int calshift(LLONG_TYPE i);
LLONG_TYPE calmod(int i);
void ConstantFold(QUAD *d);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -