| [ CnUnix ] in KIDS 글 쓴 이(By): parsec ( 먼 소 류 ) 날 짜 (Date): 2003년 2월 6일 목요일 오후 08시 20분 38초 제 목(Title): [i*5/5] -- 일기보드에서... C code: ----------------------------------------- void draw_image( const int START_X, const int START_Y, const int END_X, const in t END_Y ) { int i, j; word data16; //Remove warning , r_data, g_data, b_data; if(!is_mainlcd_onoff) return; if(END_Y == 14) //annunciatorbar만 그리기위해 들어옴. 자바 실행중에 ann { LcdMainWriteCmd(RXSTART); LcdMainWriteData(0); LcdMainWriteCmd(RXEND); LcdMainWriteData(119); LcdMainWriteCmd(RYSTART); LcdMainWriteData(0); LcdMainWriteCmd(RYEND); LcdMainWriteData(13); LcdMainWriteCmd(DISP_DATA); for(j=0; j<14; j++) { for(i=0; i<120; i++) { if(lcd_color_depth == MAIN_COLOR_64K) { LcdMainWriteData(ezUI_annunbar_image[j][ i]);//ezUI_image2[j][i]); } else if(lcd_color_depth == MAIN_COLOR_256K) { LcdMainWriteData(ezUI_annunbar_image[j][ LcdMainWriteData(ezUI_annunbar_image[j][ i] & 0xFFFF);//ezUI_image2[j][i] & 0xFFFF); } } } } else{//END_Y!=14 UI전체 screen update // (0.0)~(119,159) LcdMainWriteCmd(RXSTART); LcdMainWriteData(0); LcdMainWriteCmd(RXEND); LcdMainWriteData(119); LcdMainWriteCmd(RYSTART); LcdMainWriteData(0); LcdMainWriteCmd(RYEND); LcdMainWriteData(159); LcdMainWriteCmd(DISP_DATA); if(lcd_color_depth == MAIN_COLOR_64K) { for(j=0;j<160;j++) { for(i=0;i<120;i++) { data16 = ezUI_image2[j][i*5/5]; /* 더미 연산을 넣는 경우 요 위치에 넣음. --> */ /* 데이타 출력 부분: */ LcdMainWriteData(data16); } } } else if(lcd_color_depth == MAIN_COLOR_256K) { for(j=0;j<160;j++) { for(i=0;i<120;i++) { data16 = ezUI_image2[j][i] & 0x0003; // R5-R4 LcdMainWriteData(data16); data16 = ezUI_image2[j][i] & 0xFFFF; // R3-B0 LcdMainWriteData(data16); } } } } //END_Y!=14 LcdMainWriteCmd(NOP); } -------------- C 코드는 여기까지 -------------- 해당 부분 어셈블러 코드: (인덱스에 연산하는 부분은 |L1.308|) ------------------------------- ; generated by ARM C Compiler, ADS1.0.1 [Build 187] CODE32 AREA ||C$$codeseg||, CODE, READONLY ||x$codeseg|| DATA draw_image PROC LDR a1,|L1.436| STMDB sp!,{v1-v5,lr} FRAME SAVE r14, -4 FRAME SAVE r8, -8 FRAME SAVE r7, -12 FRAME SAVE r6, -16 FRAME SAVE r5, -20 FRAME SAVE r4, -24 FRAME ADDRESS r13, 24 LDRB a1,[a1,#0] CMP a1,#0 BEQ |L1.428| MOV v1,a4 MOV v4,#0x2000000 CMP v1,#0xe MOV a4,#8 MOV a2,#9 MOV a3,#0x77 MOV a1,#7 MOV ip,#0 LDR lr,|L1.440| BNE |L1.208| MOV v2,v4 STRH a1,[v4,#0] STRH ip,[v2,#2] STRH a4,[v2,#0] STRH a3,[v2,#2] STRH a2,[v2,#0] STRH ip,[v2,#2] MOV a1,#0xa STRH a1,[v2,#0] MOV a1,#0xd STRH a1,[v2,#2] MOV a1,#5 STRH a1,[v2,#0] LDR v1,|L1.444| MOV a3,#0 |L1.120| RSB a2,a3,a3,LSL #4 ADD a2,v1,a2,LSL #4 MOV a1,#0 |L1.132| LDRB a4,[lr,#0] CMP a4,#1 MOVEQ a4,a1,LSL #1 BEQ |L1.172| CMP a4,#2 BNE |L1.180| MOV a4,a1,LSL #1 LDRH ip,[a2,a4] AND ip,ip,#3 STRH ip,[v2,#2] |L1.172| LDRH a4,[a2,a4] STRH a4,[v2,#2] |L1.180| ADD a1,a1,#1 CMP a1,#0x78 BLT |L1.132| ADD a3,a3,#1 CMP a3,#0xe BLT |L1.120| B |L1.420| |L1.208| STRH a1,[v4,#0] STRH ip,[v4,#2] STRH a4,[v4,#0] STRH a3,[v4,#2] STRH a2,[v4,#0] STRH ip,[v4,#2] MOV a1,#0xa STRH a1,[v4,#0] MOV a1,#0x9f STRH a1,[v4,#2] MOV a1,#5 STRH a1,[v4,#0] LDRB a1,[lr,#0] LDR v5,|L1.448| CMP a1,#1 MOVEQ v2,#0 BEQ |L1.296| CMP a1,#2 BNE |L1.420| MOV a3,#0 MOV lr,v4 B |L1.360| |L1.296| RSB a1,v2,v2,LSL #4 ADD v3,v5,a1,LSL #4 MOV v1,#0 |L1.308| ADD a2,v1,v1,LSL #2 MOV a1,#5 BL __rt_sdiv MOV a1,a1,LSL #1 LDRH a1,[v3,a1] STRH a1,[v4,#2] ADD v1,v1,#1 CMP v1,#0x78 BLT |L1.308| ADD v2,v2,#1 CMP v2,#0xa0 BLT |L1.296| B |L1.420| |L1.360| RSB a2,a3,a3,LSL #4 ADD a2,v5,a2,LSL #4 MOV a1,#0 |L1.372| MOV a4,a1,LSL #1 LDRH ip,[a2,a4] AND ip,ip,#3 STRH ip,[lr,#2] LDRH a4,[a2,a4] STRH a4,[lr,#2] ADD a1,a1,#1 CMP a1,#0x78 BLT |L1.372| ADD a3,a3,#1 CMP a3,#0xa0 BLT |L1.360| |L1.420| MOV a1,#0xff STRH a1,[v4,#0] |L1.428| LDMIA sp!,{v1-v5,lr} FRAME STATE REMEMBER FRAME RESTORE r4 FRAME RESTORE r5 FRAME RESTORE r6 FRAME RESTORE r7 FRAME RESTORE r8 FRAME RESTORE r14 FRAME ADDRESS r13, 0 BX lr |L1.436| FRAME STATE RESTORE DCD is_mainlcd_onoff |L1.440| DCD lcd_color_depth |L1.444| DCD ezUI_annunbar_image |L1.448| DCD ezUI_image2 KEEP draw_image ENDP ----------- 어셈블러 코드는 여기까지--------------- ... May the source be with you! |