Mercurial > hg > CbC > old > device
changeset 397:33a09aa401ba
arm const pass
author | kono |
---|---|
date | Fri, 15 Oct 2004 02:08:06 +0900 |
parents | bfeefa7f09f5 |
children | bf583e04936f |
files | .gdbinit Changes mc-code-arm.c mc-codegen.c mc-codegen.h test/const.c |
diffstat | 6 files changed, 366 insertions(+), 91 deletions(-) [+] |
line wrap: on
line diff
--- a/.gdbinit Wed Oct 13 16:10:44 2004 +0900 +++ b/.gdbinit Fri Oct 15 02:08:06 2004 +0900 @@ -5,7 +5,7 @@ # run -s nkf203/nkf.c # run -s -ob01.s mc-switch.c # run -s l.c -run -s test/bitfield.c +run -s test/const.c # run -s test/basic.c # run -s test/code-gen-all.c define regs
--- a/Changes Wed Oct 13 16:10:44 2004 +0900 +++ b/Changes Fri Oct 15 02:08:06 2004 +0900 @@ -6001,3 +6001,25 @@ そうか、C++ のmaglegationをいれれば、C++ とは接続可能。 だけど。 + +Wed Oct 13 21:06:31 JST 2004 + +mvn は1's complement で、sub は2's complement なみたいね。 +なので、8bit const の時におかしくなる。 + +32bit word のalignmentは4でなくてはならないらしい。 + +0x20005cc <code_lvar_address+216>: str r0, [r11, -#22] +(gdb) p $r0 +$13 = -1073742791 +0x20005d0 <code_lvar_address+220>: ldr r0, [r11, -#22] +(gdb) si +(gdb) p $r0 +$15 = -63324161 +(gdb) p (char*) -1073742791 +$16 = 0xbffffc39 " \004@L +(gdb) p (char*)-63324161 +$17 = 0xfc39bfff <Address 0xfc39bfff out of bounds> +(gdb) quit + +うーむ。
--- a/mc-code-arm.c Wed Oct 13 16:10:44 2004 +0900 +++ b/mc-code-arm.c Fri Oct 15 02:08:06 2004 +0900 @@ -79,9 +79,9 @@ static int lreg_sp; /* longlong REGister Stack-Pointer */ static int lreg_stack[MAX_MAX]; /* 実際のレジスタの領域 */ -#define REG_ip 12 -#define REG_fp 13 -#define REG_sp 14 +#define REG_ip 13 +#define REG_fp 14 +#define REG_sp 15 #define REG_VAR_BASE 11 #define REG_VAR_MIN 9 #define MIN_TMP_REG 2 /* only one tmp register? */ @@ -322,8 +322,8 @@ prev $sp=$fp $sp=$fp */ -#define arg_offset 8 -#define arg_offset1 0 +#define arg_offset 0 +#define arg_offset1 (-16) int disp_offset = 0; #define disp_offset 0 @@ -355,9 +355,11 @@ // printf(" @ args = %d, pretend = %d, frame = %d\n", // max_func_args,0,round16(-disp)); // printf(" @ frame_needed = 1, current_function_anonymous_args = 0\n"); -printf("\t.set .L%d, %d\n",lvar_offset_label,lvar_offsetv); +// printf("\t.set .L%d, %d\n",lvar_offset_label,lvar_offsetv); +printf("\t.set .L%d, %d\n",lvar_offset_label,-16); printf("\t.set .L%d, %d\n",r1_offset_label,r1_offsetv); + #if 0 printf("# vars= %d, regs= %d/%d, args= %d, extra= %d\n", round16(-disp), @@ -518,6 +520,7 @@ size_of_double = SIZE_OF_DOUBLE; size_of_longlong = SIZE_OF_LONGLONG; endian = ENDIAN; + disp_align = 4; init_src = init_src0; reg=RET_LREGISTER; @@ -1330,6 +1333,16 @@ #define mask8(d,bit) (d & (255 << bit)) +/* + mode CONST or other (CMP is Ok only in stage 1 result) + *p1 stage 1 const + *p2 stage 2 const + *p3 stage 3 const + return 0 ... require 4 stage + 1 ... positive result + -1 ... negative result + + */ static int make_const(int c,int *p1,int *p2,int *p3,int mode) { @@ -1338,24 +1351,49 @@ int msign,mim,mjm,mkm; int id,jd,kd; int i,j,k; + int d; + if (c == (d = mask8(c,0))) { + min_stage=1; min_stage=1; msign = 1; + mim = d;mjm = 0;mkm = 0; + } else if (mode!=CONST) { + if (-c == (d = mask8(-c,0))) { + min_stage=1; min_stage=1; msign = -1; + mim = d;mjm = 0;mkm = 0; + } + } else { + if (~c== (d = mask8(~c,0))) { + min_stage=1; min_stage=1; msign = -1; + mim = d;mjm = 0;mkm = 0; + } + } for(sign=1;sign>=-1;sign-=2) { - int d; - if (sign==1) { d = c; } else { d = mode==CMP?-c:~c; } - if (mask8(d,0)==d||d==0) { - min_stage=1; min_stage=1; msign = sign; - mim = d;mjm = 0;mkm = 0; - break; - } if (min_stage==1) break; for(i=24;i>=0;i-=2) { jm = km = 0; - if (!(im=mask8(d,i))) continue; - id = d - im; - if (id==0) { - min_stage=1; msign = sign; - mim = im;mjm = jm;mkm = km; - break; + if (sign>0) { + if (c == (d = mask8(c,i))) { + min_stage=1; min_stage=1; msign = 1; + mim = d;mjm = 0;mkm = 0; + break; + } + id = c - d; + } else if (mode!=CONST) { + if (-c == (d = mask8(-c,i))) { + min_stage=1; min_stage=1; msign = -1; + mim = d;mjm = 0;mkm = 0; + break; + } + id = -c - d; + } else { + if (~c== (d = mask8(~c,i))) { + min_stage=1; min_stage=1; msign = -1; + mim = d;mjm = 0;mkm = 0; + break; + } + id = ~c - d; } + if (d==0) continue; + im = d; if (min_stage<=2) continue; for(j=i-8;j>=0;j-=2) { km = 0; @@ -1390,7 +1428,7 @@ { int sign,p1,p2,p3; sign = make_const(c,&p1,&p2,&p3,mode); - return (p1==0||(p1&&!p2&&!p3))?sign:0; + return (c==0||(p1&&!p2&&!p3))?sign:0; } @@ -1404,7 +1442,7 @@ use_int(reg); crn = register_name(reg); inc_inst(3); - if ((s=make_const(e2,&p1,&p2,&p3,0))) { + if ((s=make_const(e2,&p1,&p2,&p3,CONST))) { add = s>0?"add":"sub"; mov = s>0?"mov":"mvn"; printf("\t%s\t%s, #%d\n",mov,crn,p1); @@ -1426,6 +1464,8 @@ { char *crn = register_name(reg); char *rrn = register_name(r); + char *drn; + int dreg; int s,p1,p2,p3; char *add; int label,disp; @@ -1441,8 +1481,10 @@ if (p3) printf("\t%s\t%s, %s, #%d\n",add,crn,rrn,p3); } else { disp = search_const(CONST,offset,&label); - printf("\tldr\t%s, .L%d+%d\n",crn,label,disp); - printf("\tadd\t%s, %s, %s\n",crn,crn,rrn); + drn = register_name(dreg = get_register()); + printf("\tldr\t%s, .L%d+%d\n",drn,label,disp); + printf("\tadd\t%s, %s, %s\n",crn,drn,rrn); + free_register(dreg); } }
--- a/mc-codegen.c Wed Oct 13 16:10:44 2004 +0900 +++ b/mc-codegen.c Fri Oct 15 02:08:06 2004 +0900 @@ -16,6 +16,7 @@ int size_of_longlong; int bit_of_byte; int endian; +int disp_align; static void assign(int e1); static void gen_asm(int asm0,int in,int out,int opt,int e); @@ -3608,7 +3609,14 @@ extern int new_lvar0(int sz) { - return disp-=sz; + switch (disp_align) { + default: + case 0: return disp-=sz; + case 4: + disp-=sz; + if (sz==4) disp &= -4; + return disp; + } } extern int
--- a/mc-codegen.h Wed Oct 13 16:10:44 2004 +0900 +++ b/mc-codegen.h Fri Oct 15 02:08:06 2004 +0900 @@ -9,6 +9,7 @@ extern int size_of_longlong; extern int bit_of_byte; extern int endian; +extern int disp_align; #define USE_CREG (-1) #define ASM_INPUT 1
--- a/test/const.c Wed Oct 13 16:10:44 2004 +0900 +++ b/test/const.c Fri Oct 15 02:08:06 2004 +0900 @@ -2,74 +2,276 @@ { int i; i = 0x0f0f0ff; - printf("%x\n",i); + printf("0:\t%x\n",i); i = 0x0f0f0ff<<1; - printf("%x\n",i); + printf("1:\t%x\n",i); + +i = 1; printf("2:\t%x\n",i); +i = -1; printf("3:\t%x\n",i); + if (i==1) printf("i==1\n",i); + if (i==-1) printf("i==-1\n",i); + +i = 0x555<<0; printf("4:\t%x\n",i); +i = 0x555<<1; printf("5:\t%x\n",i); +i = 0x555<<2; printf("6:\t%x\n",i); +i = 0x555<<3; printf("7:\t%x\n",i); +i = 0x555<<4; printf("8:\t%x\n",i); +i = 0x555<<5; printf("9:\t%x\n",i); +i = 0x555<<6; printf("10:\t%x\n",i); +i = 0x555<<7; printf("11:\t%x\n",i); +i = 0x555<<8; printf("12:\t%x\n",i); +i = 0x555<<9; printf("13:\t%x\n",i); +i = 0x555<<10; printf("14:\t%x\n",i); +i = 0x555<<11; printf("15:\t%x\n",i); +i = 0x555<<12; printf("16:\t%x\n",i); +i = 0x555<<13; printf("17:\t%x\n",i); +i = 0x555<<14; printf("18:\t%x\n",i); +i = 0x555<<15; printf("19:\t%x\n",i); +i = 0x555<<16; printf("20:\t%x\n",i); +i = 0x555<<17; printf("21:\t%x\n",i); +i = 0x555<<18; printf("22:\t%x\n",i); +i = 0x555<<19; printf("23:\t%x\n",i); +i = 0x555<<20; printf("24:\t%x\n",i); +i = 0x555<<21; printf("25:\t%x\n",i); +i = 0x555<<22; printf("26:\t%x\n",i); +i = 0x555<<23; printf("27:\t%x\n",i); +i = 0x555<<24; printf("28:\t%x\n",i); +i = 0x555<<25; printf("29:\t%x\n",i); +i = 0x555<<26; printf("30:\t%x\n",i); +i = 0x555<<27; printf("31:\t%x\n",i); +i = 0x555<<28; printf("32:\t%x\n",i); +i = 0x555<<29; printf("33:\t%x\n",i); +i = 0x555<<30; printf("34:\t%x\n",i); +i = 0x555<<31; printf("35:\t%x\n",i); + +i = 1; printf("36:\t%x\n",i); +i = 3; printf("37:\t%x\n",i); +i = 7; printf("38:\t%x\n",i); +i = 15; printf("39:\t%x\n",i); +i = 31; printf("40:\t%x\n",i); +i = 63; printf("41:\t%x\n",i); +i = 127; printf("42:\t%x\n",i); +i = 255; printf("43:\t%x\n",i); +i = 511; printf("44:\t%x\n",i); +i = 1023; printf("45:\t%x\n",i); +i = 2047; printf("46:\t%x\n",i); +i = 4095; printf("47:\t%x\n",i); +i = 8191; printf("48:\t%x\n",i); +i = 16383; printf("49:\t%x\n",i); +i = 32767; printf("50:\t%x\n",i); +i = 65535; printf("51:\t%x\n",i); +i = 131071; printf("52:\t%x\n",i); +i = 262143; printf("53:\t%x\n",i); +i = 524287; printf("54:\t%x\n",i); +i = 1048575; printf("55:\t%x\n",i); +i = 2097151; printf("56:\t%x\n",i); +i = 4194303; printf("57:\t%x\n",i); +i = 8388607; printf("58:\t%x\n",i); +i = 16777215; printf("59:\t%x\n",i); +i = 33554431; printf("60:\t%x\n",i); +i = 67108863; printf("61:\t%x\n",i); +i = 134217727; printf("62:\t%x\n",i); +i = 268435455; printf("63:\t%x\n",i); +i = 536870911; printf("64:\t%x\n",i); +i = 1073741823; printf("65:\t%x\n",i); +i = 2147483647; printf("66:\t%x\n",i); +i = 4294967295; printf("67:\t%x\n",i); + +i = -( 0x555<<0 ); printf("68:\t%x\n",i); +i = -( 0x555<<1 ); printf("69:\t%x\n",i); +i = -( 0x555<<2 ); printf("70:\t%x\n",i); +i = -( 0x555<<3 ); printf("71:\t%x\n",i); +i = -( 0x555<<4 ); printf("72:\t%x\n",i); +i = -( 0x555<<5 ); printf("73:\t%x\n",i); +i = -( 0x555<<6 ); printf("74:\t%x\n",i); +i = -( 0x555<<7 ); printf("75:\t%x\n",i); +i = -( 0x555<<8 ); printf("76:\t%x\n",i); +i = -( 0x555<<9 ); printf("77:\t%x\n",i); +i = -( 0x555<<10 ); printf("78:\t%x\n",i); +i = -( 0x555<<11 ); printf("79:\t%x\n",i); +i = -( 0x555<<12 ); printf("80:\t%x\n",i); +i = -( 0x555<<13 ); printf("81:\t%x\n",i); +i = -( 0x555<<14 ); printf("82:\t%x\n",i); +i = -( 0x555<<15 ); printf("83:\t%x\n",i); +i = -( 0x555<<16 ); printf("84:\t%x\n",i); +i = -( 0x555<<17 ); printf("85:\t%x\n",i); +i = -( 0x555<<18 ); printf("86:\t%x\n",i); +i = -( 0x555<<19 ); printf("87:\t%x\n",i); +i = -( 0x555<<20 ); printf("88:\t%x\n",i); +i = -( 0x555<<21 ); printf("89:\t%x\n",i); +i = -( 0x555<<22 ); printf("90:\t%x\n",i); +i = -( 0x555<<23 ); printf("91:\t%x\n",i); +i = -( 0x555<<24 ); printf("92:\t%x\n",i); +i = -( 0x555<<25 ); printf("93:\t%x\n",i); +i = -( 0x555<<26 ); printf("94:\t%x\n",i); +i = -( 0x555<<27 ); printf("95:\t%x\n",i); +i = -( 0x555<<28 ); printf("96:\t%x\n",i); +i = -( 0x555<<29 ); printf("97:\t%x\n",i); +i = -( 0x555<<30 ); printf("98:\t%x\n",i); +i = -( 0x555<<31 ); printf("99:\t%x\n",i); -i = 0x555<<0; printf("%x\n",i); -i = 0x555<<1; printf("%x\n",i); -i = 0x555<<2; printf("%x\n",i); -i = 0x555<<3; printf("%x\n",i); -i = 0x555<<4; printf("%x\n",i); -i = 0x555<<5; printf("%x\n",i); -i = 0x555<<6; printf("%x\n",i); -i = 0x555<<7; printf("%x\n",i); -i = 0x555<<8; printf("%x\n",i); -i = 0x555<<9; printf("%x\n",i); -i = 0x555<<10; printf("%x\n",i); -i = 0x555<<11; printf("%x\n",i); -i = 0x555<<12; printf("%x\n",i); -i = 0x555<<13; printf("%x\n",i); -i = 0x555<<14; printf("%x\n",i); -i = 0x555<<15; printf("%x\n",i); -i = 0x555<<16; printf("%x\n",i); -i = 0x555<<17; printf("%x\n",i); -i = 0x555<<18; printf("%x\n",i); -i = 0x555<<19; printf("%x\n",i); -i = 0x555<<20; printf("%x\n",i); -i = 0x555<<21; printf("%x\n",i); -i = 0x555<<22; printf("%x\n",i); -i = 0x555<<23; printf("%x\n",i); -i = 0x555<<24; printf("%x\n",i); -i = 0x555<<25; printf("%x\n",i); -i = 0x555<<26; printf("%x\n",i); -i = 0x555<<27; printf("%x\n",i); -i = 0x555<<28; printf("%x\n",i); -i = 0x555<<29; printf("%x\n",i); -i = 0x555<<30; printf("%x\n",i); -i = 0x555<<31; printf("%x\n",i); +i = -( 1 ); printf("100:\t%x\n",i); +i = -( 3 ); printf("101:\t%x\n",i); +i = -( 7 ); printf("102:\t%x\n",i); +i = -( 15 ); printf("103:\t%x\n",i); +i = -( 31 ); printf("104:\t%x\n",i); +i = -( 63 ); printf("105:\t%x\n",i); +i = -( 127 ); printf("106:\t%x\n",i); +i = -( 255 ); printf("107:\t%x\n",i); +i = -( 511 ); printf("108:\t%x\n",i); +i = -( 1023 ); printf("109:\t%x\n",i); +i = -( 2047 ); printf("110:\t%x\n",i); +i = -( 4095 ); printf("111:\t%x\n",i); +i = -( 8191 ); printf("112:\t%x\n",i); +i = -( 16383 ); printf("113:\t%x\n",i); +i = -( 32767 ); printf("114:\t%x\n",i); +i = -( 65535 ); printf("115:\t%x\n",i); +i = -( 131071 ); printf("116:\t%x\n",i); +i = -( 262143 ); printf("117:\t%x\n",i); +i = -( 524287 ); printf("118:\t%x\n",i); +i = -( 1048575 ); printf("119:\t%x\n",i); +i = -( 2097151 ); printf("120:\t%x\n",i); +i = -( 4194303 ); printf("121:\t%x\n",i); +i = -( 8388607 ); printf("122:\t%x\n",i); +i = -( 16777215 ); printf("123:\t%x\n",i); +i = -( 33554431 ); printf("124:\t%x\n",i); +i = -( 67108863 ); printf("125:\t%x\n",i); +i = -( 134217727 ); printf("126:\t%x\n",i); +i = -( 268435455 ); printf("127:\t%x\n",i); +i = -( 536870911 ); printf("128:\t%x\n",i); +i = -( 1073741823 ); printf("129:\t%x\n",i); +i = -( 2147483647 ); printf("130:\t%x\n",i); +i = -( 4294967295 ); printf("131:\t%x\n",i); + +i += 0x555<<0; printf("132:\t%x\n",i); +i += 0x555<<1; printf("133:\t%x\n",i); +i += 0x555<<2; printf("134:\t%x\n",i); +i += 0x555<<3; printf("135:\t%x\n",i); +i += 0x555<<4; printf("136:\t%x\n",i); +i += 0x555<<5; printf("137:\t%x\n",i); +i += 0x555<<6; printf("138:\t%x\n",i); +i += 0x555<<7; printf("139:\t%x\n",i); +i += 0x555<<8; printf("140:\t%x\n",i); +i += 0x555<<9; printf("141:\t%x\n",i); +i += 0x555<<10; printf("142:\t%x\n",i); +i += 0x555<<11; printf("143:\t%x\n",i); +i += 0x555<<12; printf("144:\t%x\n",i); +i += 0x555<<13; printf("145:\t%x\n",i); +i += 0x555<<14; printf("146:\t%x\n",i); +i += 0x555<<15; printf("147:\t%x\n",i); +i += 0x555<<16; printf("148:\t%x\n",i); +i += 0x555<<17; printf("149:\t%x\n",i); +i += 0x555<<18; printf("150:\t%x\n",i); +i += 0x555<<19; printf("151:\t%x\n",i); +i += 0x555<<20; printf("152:\t%x\n",i); +i += 0x555<<21; printf("153:\t%x\n",i); +i += 0x555<<22; printf("154:\t%x\n",i); +i += 0x555<<23; printf("155:\t%x\n",i); +i += 0x555<<24; printf("156:\t%x\n",i); +i += 0x555<<25; printf("157:\t%x\n",i); +i += 0x555<<26; printf("158:\t%x\n",i); +i += 0x555<<27; printf("159:\t%x\n",i); +i += 0x555<<28; printf("160:\t%x\n",i); +i += 0x555<<29; printf("161:\t%x\n",i); +i += 0x555<<30; printf("162:\t%x\n",i); +i += 0x555<<31; printf("163:\t%x\n",i); -i = 1; printf("%x\n",i); -i = 3; printf("%x\n",i); -i = 7; printf("%x\n",i); -i = 15; printf("%x\n",i); -i = 31; printf("%x\n",i); -i = 63; printf("%x\n",i); -i = 127; printf("%x\n",i); -i = 255; printf("%x\n",i); -i = 511; printf("%x\n",i); -i = 1023; printf("%x\n",i); -i = 2047; printf("%x\n",i); -i = 4095; printf("%x\n",i); -i = 8191; printf("%x\n",i); -i = 16383; printf("%x\n",i); -i = 32767; printf("%x\n",i); -i = 65535; printf("%x\n",i); -i = 131071; printf("%x\n",i); -i = 262143; printf("%x\n",i); -i = 524287; printf("%x\n",i); -i = 1048575; printf("%x\n",i); -i = 2097151; printf("%x\n",i); -i = 4194303; printf("%x\n",i); -i = 8388607; printf("%x\n",i); -i = 16777215; printf("%x\n",i); -i = 33554431; printf("%x\n",i); -i = 67108863; printf("%x\n",i); -i = 134217727; printf("%x\n",i); -i = 268435455; printf("%x\n",i); -i = 536870911; printf("%x\n",i); -i = 1073741823; printf("%x\n",i); -i = 2147483647; printf("%x\n",i); -i = 4294967295; printf("%x\n",i); +i += 1; printf("164:\t%x\n",i); +i += 3; printf("165:\t%x\n",i); +i += 7; printf("166:\t%x\n",i); +i += 15; printf("167:\t%x\n",i); +i += 31; printf("168:\t%x\n",i); +i += 63; printf("169:\t%x\n",i); +i += 127; printf("170:\t%x\n",i); +i += 255; printf("171:\t%x\n",i); +i += 511; printf("172:\t%x\n",i); +i += 1023; printf("173:\t%x\n",i); +i += 2047; printf("174:\t%x\n",i); +i += 4095; printf("175:\t%x\n",i); +i += 8191; printf("176:\t%x\n",i); +i += 16383; printf("177:\t%x\n",i); +i += 32767; printf("178:\t%x\n",i); +i += 65535; printf("179:\t%x\n",i); +i += 131071; printf("180:\t%x\n",i); +i += 262143; printf("181:\t%x\n",i); +i += 524287; printf("182:\t%x\n",i); +i += 1048575; printf("183:\t%x\n",i); +i += 2097151; printf("184:\t%x\n",i); +i += 4194303; printf("185:\t%x\n",i); +i += 8388607; printf("186:\t%x\n",i); +i += 16777215; printf("187:\t%x\n",i); +i += 33554431; printf("188:\t%x\n",i); +i += 67108863; printf("189:\t%x\n",i); +i += 134217727; printf("190:\t%x\n",i); +i += 268435455; printf("191:\t%x\n",i); +i += 536870911; printf("192:\t%x\n",i); +i += 1073741823; printf("193:\t%x\n",i); +i += 2147483647; printf("194:\t%x\n",i); +i += 4294967295; printf("195:\t%x\n",i); +i += -( 0x555<<0 ); printf("196:\t%x\n",i); +i += -( 0x555<<1 ); printf("197:\t%x\n",i); +i += -( 0x555<<2 ); printf("198:\t%x\n",i); +i += -( 0x555<<3 ); printf("199:\t%x\n",i); +i += -( 0x555<<4 ); printf("200:\t%x\n",i); +i += -( 0x555<<5 ); printf("201:\t%x\n",i); +i += -( 0x555<<6 ); printf("202:\t%x\n",i); +i += -( 0x555<<7 ); printf("203:\t%x\n",i); +i += -( 0x555<<8 ); printf("204:\t%x\n",i); +i += -( 0x555<<9 ); printf("205:\t%x\n",i); +i += -( 0x555<<10 ); printf("206:\t%x\n",i); +i += -( 0x555<<11 ); printf("207:\t%x\n",i); +i += -( 0x555<<12 ); printf("208:\t%x\n",i); +i += -( 0x555<<13 ); printf("209:\t%x\n",i); +i += -( 0x555<<14 ); printf("210:\t%x\n",i); +i += -( 0x555<<15 ); printf("211:\t%x\n",i); +i += -( 0x555<<16 ); printf("212:\t%x\n",i); +i += -( 0x555<<17 ); printf("213:\t%x\n",i); +i += -( 0x555<<18 ); printf("214:\t%x\n",i); +i += -( 0x555<<19 ); printf("215:\t%x\n",i); +i += -( 0x555<<20 ); printf("216:\t%x\n",i); +i += -( 0x555<<21 ); printf("217:\t%x\n",i); +i += -( 0x555<<22 ); printf("218:\t%x\n",i); +i += -( 0x555<<23 ); printf("219:\t%x\n",i); +i += -( 0x555<<24 ); printf("220:\t%x\n",i); +i += -( 0x555<<25 ); printf("221:\t%x\n",i); +i += -( 0x555<<26 ); printf("222:\t%x\n",i); +i += -( 0x555<<27 ); printf("223:\t%x\n",i); +i += -( 0x555<<28 ); printf("224:\t%x\n",i); +i += -( 0x555<<29 ); printf("225:\t%x\n",i); +i += -( 0x555<<30 ); printf("226:\t%x\n",i); +i += -( 0x555<<31 ); printf("227:\t%x\n",i); + +i += -( 1 ); printf("228:\t%x\n",i); +i += -( 3 ); printf("229:\t%x\n",i); +i += -( 7 ); printf("230:\t%x\n",i); +i += -( 15 ); printf("231:\t%x\n",i); +i += -( 31 ); printf("232:\t%x\n",i); +i += -( 63 ); printf("233:\t%x\n",i); +i += -( 127 ); printf("234:\t%x\n",i); +i += -( 255 ); printf("235:\t%x\n",i); +i += -( 511 ); printf("236:\t%x\n",i); +i += -( 1023 ); printf("237:\t%x\n",i); +i += -( 2047 ); printf("238:\t%x\n",i); +i += -( 4095 ); printf("239:\t%x\n",i); +i += -( 8191 ); printf("240:\t%x\n",i); +i += -( 16383 ); printf("241:\t%x\n",i); +i += -( 32767 ); printf("242:\t%x\n",i); +i += -( 65535 ); printf("243:\t%x\n",i); +i += -( 131071 ); printf("244:\t%x\n",i); +i += -( 262143 ); printf("245:\t%x\n",i); +i += -( 524287 ); printf("246:\t%x\n",i); +i += -( 1048575 ); printf("247:\t%x\n",i); +i += -( 2097151 ); printf("248:\t%x\n",i); +i += -( 4194303 ); printf("249:\t%x\n",i); +i += -( 8388607 ); printf("250:\t%x\n",i); +i += -( 16777215 ); printf("251:\t%x\n",i); +i += -( 33554431 ); printf("252:\t%x\n",i); +i += -( 67108863 ); printf("253:\t%x\n",i); +i += -( 134217727 ); printf("254:\t%x\n",i); +i += -( 268435455 ); printf("255:\t%x\n",i); +i += -( 536870911 ); printf("256:\t%x\n",i); +i += -( 1073741823 ); printf("257:\t%x\n",i); +i += -( 2147483647 ); printf("258:\t%x\n",i); +i += -( 4294967295 ); printf("259:\t%x\n",i); }