Mercurial > hg > CbC > old > device
comparison mc-code-mips.c @ 266:86e315702d9e
*** empty log message ***
author | kono |
---|---|
date | Mon, 17 May 2004 04:18:12 +0900 |
parents | b47a106a9bce |
children | e7ab23c992e5 |
comparison
equal
deleted
inserted
replaced
265:b47a106a9bce | 266:86e315702d9e |
---|---|
1040 | 1040 |
1041 static char *cload(int sz,int sign) { | 1041 static char *cload(int sz,int sign) { |
1042 if (sign) { | 1042 if (sign) { |
1043 return sz==1?"lb":sz==SIZE_OF_SHORT?"lh":"lw"; | 1043 return sz==1?"lb":sz==SIZE_OF_SHORT?"lh":"lw"; |
1044 } else { | 1044 } else { |
1045 return sz==1?"lbu":sz==SIZE_OF_SHORT?"lhu":"lwu"; | 1045 return sz==1?"lbu":sz==SIZE_OF_SHORT?"lhu":"lhu"; |
1046 } | 1046 } |
1047 } | 1047 } |
1048 | 1048 |
1049 static char *cstore(int sz) { return sz==1?"sb":sz==SIZE_OF_SHORT?"sh":"sw"; } | 1049 static char *cstore(int sz) { return sz==1?"sb":sz==SIZE_OF_SHORT?"sh":"sw"; } |
1050 | 1050 |
2381 break; | 2381 break; |
2382 case SUB: | 2382 case SUB: |
2383 printf("\taddu %s,%s,-%d\n",crn,crn,v); | 2383 printf("\taddu %s,%s,-%d\n",crn,crn,v); |
2384 break; | 2384 break; |
2385 case CMP: | 2385 case CMP: |
2386 printf("\tslt %s,%s,%d\n",crn,crn,v); | 2386 printf("\tslt %s,%s,%d\n",crn,crn,v); |
2387 cmpreg = creg; | |
2387 break; | 2388 break; |
2388 case BOR: | 2389 case BOR: |
2389 printf("\tori %s,%s,%d\n",crn,crn,v); | 2390 printf("\tori %s,%s,%d\n",crn,crn,v); |
2390 break; | 2391 break; |
2391 default: | 2392 default: |
2427 char *rn; | 2428 char *rn; |
2428 if(chk) return; | 2429 if(chk) return; |
2429 rn = register_name(reg = get_register()); | 2430 rn = register_name(reg = get_register()); |
2430 printf("\tli %s,%d\n",rn,e); | 2431 printf("\tli %s,%d\n",rn,e); |
2431 printf("\tsltu %s,%s,%s\n",rn,register_name(csreg),rn); | 2432 printf("\tsltu %s,%s,%s\n",rn,register_name(csreg),rn); |
2433 cmpreg=csreg; | |
2432 free_register(reg); | 2434 free_register(reg); |
2433 } | 2435 } |
2434 | 2436 |
2435 void | 2437 void |
2436 code_opening(char *filename) | 2438 code_opening(char *filename) |
2859 error(-1); return; | 2861 error(-1); return; |
2860 } | 2862 } |
2861 if (chk) return; | 2863 if (chk) return; |
2862 if (n->dsp != -1) { | 2864 if (n->dsp != -1) { |
2863 n->dsp = -1; /* initiallized flag */ | 2865 n->dsp = -1; /* initiallized flag */ |
2864 printf(".globl\t%s\n",name); | 2866 if (n->sc!=STATIC) |
2867 printf(".globl\t%s\n",name); | |
2865 data_mode(name); | 2868 data_mode(name); |
2866 align(t); | 2869 align(t); |
2867 printf("%s:\n",name); | 2870 printf("%s:\n",name); |
2868 } else { | 2871 } else { |
2869 data_mode(0); | 2872 data_mode(0); |
3015 | 3018 |
3016 #if FLOAT_CODE | 3019 #if FLOAT_CODE |
3017 | 3020 |
3018 /* floating point */ | 3021 /* floating point */ |
3019 | 3022 |
3020 #define set_double(freg) regs[freg]=USING_DREG | 3023 #define set_double(freg) if (regs[freg]) {regs[freg]=USING_DREG;} |
3021 | 3024 |
3022 void | 3025 void |
3023 code_cmp_dregister(int e2,int d) | 3026 code_cmp_dregister(int e2,int d) |
3024 { | 3027 { |
3025 char *grn,*frn; | 3028 char *grn,*frn; |