신기한 현상을 발견했다.
코드의 위치에 따라 용량이 상당히 많이 변한다는 사실!
바뀐건, else if() 내부에 switch()가 있는 경우의 위치가 바뀐 경우이다.
속도 최적화를 위해 빨리빠져 나갈수 있도록 위로 옮겨 주었떠니 용량이 무려!!!
193 바이트나 늘어났다.. OTL
아마도..
코드사이즈가 커지면서 MOV대신 MOVX 라던가..
이런식으로 명령어에 넣어야 하는 주소의 크기가 달라지면서 발생하는 문제가 아닐까 생각이 된다.
코드의 위치에 따라 용량이 상당히 많이 변한다는 사실!
for(idx = 0; idx < len; idx++) { tempUnicode = input[idx]; if(0x0020 <= tempUnicode && tempUnicode < 0x0080) res = (char)(tempUnicode & 0x00FF); else if(tempUnicode == 0x00E1) res = 0x80; else if(tempUnicode == 0x00E0) res = 0x81; ... else if(0x0400 < tempUnicode && tempUnicode <= 0x045F) { switch(tempUnicode) { case 0x0401: res = 192 + 0; break; case 0x0402: res = 192 + 1; break; ... } } else res = ' '; }Program Size: data=187.7 xdata=0 code=9505
for(idx = 0; idx < len; idx++) { tempUnicode = input[idx]; if(0x0020 <= tempUnicode && tempUnicode < 0x0080) res = (char)(tempUnicode & 0x00FF); else if(0x0400 < tempUnicode && tempUnicode <= 0x045F) { switch(tempUnicode) { case 0x0401: res = 192 + 0; break; case 0x0402: res = 192 + 1; break; ... } } else if(tempUnicode == 0x00E1) res = 0x80; else if(tempUnicode == 0x00E0) res = 0x81; ... else res = ' '; }Program Size: data=189.7 xdata=0 code=9698
바뀐건, else if() 내부에 switch()가 있는 경우의 위치가 바뀐 경우이다.
속도 최적화를 위해 빨리빠져 나갈수 있도록 위로 옮겨 주었떠니 용량이 무려!!!
193 바이트나 늘어났다.. OTL
아마도..
코드사이즈가 커지면서 MOV대신 MOVX 라던가..
이런식으로 명령어에 넣어야 하는 주소의 크기가 달라지면서 발생하는 문제가 아닐까 생각이 된다.
'embeded > 8051' 카테고리의 다른 글
고성능 8051 호환칩 (0) | 2018.01.30 |
---|---|
8051 idata와 data의 차이? (0) | 2017.03.27 |
8051에서는 코드의 순서가 코드의 크기를 좌우한다? (7) | 2009.04.21 |
8051에서는 배열 주소 연산은 최대한 줄이도록! (0) | 2009.04.21 |
keil compiler - memory type (code,xdata,idata) (0) | 2009.04.14 |
Keil compiler - Error : Segment too large (0) | 2009.04.13 |
댓글을 달아 주세요
프로그래밍에서는 용량을 줄이는 것도 중요하겠군요.
2009.04.21 22:20 [ ADDR : EDIT/ DEL : REPLY ]저는 그냥 무턱대고 짠다는.. 푸...
아.. 일반 컴퓨터용 프로그램은 굳이 신경을 안써도 된답니다 ^^; 임베디드의 경우에 그것도 아주 작은 시스템일 경우에 한해서죠 ^^;
2009.04.21 22:24 [ ADDR : EDIT/ DEL ]그래도 똑같은 코드를 반복할 때는 조금 차이가 있겠죠?
2009.04.22 16:45 [ ADDR : EDIT/ DEL ]혹시 그 16KB 말하시는건가요? ㅎㅎ
아 16KB에서 8KB로 줄었.. OTL
2009.04.22 16:46 [ ADDR : EDIT/ DEL ]켁.. 용량 압박이군요.
2009.04.22 16:53 [ ADDR : EDIT/ DEL ]8KB라면 8192Bytes...
힘드시겠네요. 파이팅입니다!!
속도 최적화 -> 용량 증가
2009.04.22 16:20 [ ADDR : EDIT/ DEL : REPLY ]거의 정석 아닌가 싶습니다 ㅋ
둘다 잡으면 천재인가요 ㅋㅋ
2009.04.22 16:33 [ ADDR : EDIT/ DEL ]음.. 함수화 시키면은 용량증가를 억제하고
속도도 만족할 만하게 돌릴 수 있을거 같긴하던데요 ^^;
그래봤자.. 8K 보다 크므로 무효에요 ㅠ.ㅠ