rom 최적화 방법
매크로나 인라인을 사용하지 않는다 -> 코드가 길어지므로
전역 변수는 초기화 하지 않는다 -> bss는 startup코드가 생성하니깐
상수나 전역 변수 대신 지역 변수 사용 -> 스택에서 쓰므로
표준 라이브러리 함수 자제 -> 사용하지 않는 부분이 많이 담겨있다. 직접 필요 부분만 만들어 쓰도록
ram 최적화 방법
ram 최적화는 스택 최적화로 볼 수 있다. 그래서 스택을 얼마나 효율적으로 사용하느냐가 관건이 된다. 스택에는 지역 변수나 함수의 인자와 문맥이 저장된다.
함수 호출은 깊지 않게
값이 변하지 않는 전역 변수의 상수화
-const를 이용
프로그램은 롬에서 실행
- text세그먼트를 ram으로 옮기는 경우 rom보다 속도가 빨라서 그렇게 하지만 용량을 줄이자면 이렇게 할 수 있다
비트 플래그 활용
-인터럽트 발생 여부, 검색 여부, 등 이러한 플래그는 참,거짓만을 나타내기 때문에 1비트로 충분. boolean 타입이 없으므로 보통 int형 변수를 사용한다
#include <stdio.h>
struct SR{ unsigned int CF : 1, PF:1, AF:1, ZF:1, SF:1, IF:1, MOD:4; }; int main(void) { struct SR flag = {1,1,1,1,1,1,0xF}; if(flag.CF) printf("carry"); if(flag.PF) printf("parity"); if(flag.AF) printf("assistant carry"); if(flag.ZF) printf("zero"); return 0; }
결과 전부 출력됨...printf()로 32bit 전부 보고싶은데 그건 안되는 모양 31 - 0 여기서 0쪽부터 cf,pf,a,zf,sf,if,mod 순으로 저장됨 |
'컴퓨터 과학 & 영상처리 관련 > 임베디드' 카테고리의 다른 글
돌리는 것도 요령껏 (0) | 2012.06.06 |
---|---|
다중 분기문을 효과적으로 사용하는 방법 (0) | 2012.06.06 |
함수, 생각없이 쓰면 낭패본다. (0) | 2012.06.05 |
집합원소 저장의 효율적 방법 (0) | 2012.06.04 |
변수를 잘 사용하는 건 최적화의 기본 (0) | 2012.06.03 |