목차 일부
저자 서문
Story 01 김 대리, 플랫폼 개발팀으로 발령나다
의문1. 임베디드 시스템이란? ... 15
의문2. 임베디드 시스템의 구현 ... 15
의문3. 임베디드 소프트웨어 개발방법 ... 17
의문4. 프로그램을 어떻게 타겟 시스템으로 옮기나 ... 20
의문5. 임베디드 소프트웨어의 실행 ... 22
정리 ... ...
더보기
목차 전체
저자 서문
Story 01 김 대리, 플랫폼 개발팀으로 발령나다
의문1. 임베디드 시스템이란? ... 15
의문2. 임베디드 시스템의 구현 ... 15
의문3. 임베디드 소프트웨어 개발방법 ... 17
의문4. 프로그램을 어떻게 타겟 시스템으로 옮기나 ... 20
의문5. 임베디드 소프트웨어의 실행 ... 22
정리 ... 22
Story 02 김 대리, 하드웨어 제어에 눈뜨다
의문1. 하드웨어에 어떻게 접근하나 ... 25
의문2. 하드웨어 어떻게 제어하나 ... 28
의문3. 특정 비트를 어떻게 제어하나 ... 29
정리 ... 37
Story 03 김 대리, 드디어 LED를 깜박이다
과제 1. 포인터 없이 메모리에 접근하기 ... 42
과제 2. 코드 줄이기 ... 46
정리 ... 48
Story 04 컴파일러 최적화, 너무 믿지 마세요
외부 요인에 의해 변하는 메모리를 위한 volatile ... 52
정리 ... 57
Story 05 main()은 누가 호출하나
운영체제가 있는 경우의 main() 호출과정 ... 60
운영체제가 없는 경우의 main() 호출과정 ... 64
정리 ... 72
Story 06 포인터에 대한 오해와 진실
오해1. 메모리에 접근하려면 포인터가 필요하다? ... 74
오해2. 포인터와 포인터 연산은 +, -연산만 가능하다? ... 75
오해3. 배열의 이름은 포인터이다? ... 76
오해4. a[] 배열의 a와 &a는 같은 의미이다? ... 77
정리 ... 83
Story 07 김 대리의 포인터 울렁증 극복기
문자열 포인터 ... 86
void 포인터 ... 91
함수 포인터 ... 95
정리 ... 101
Story 08 최적화 꼭 해야 하나요?
코드 최적화 ... 104
정리 ... 109
Story 09 최적화의 첫 단계, 컴파일을 잘 이해하라
컴파일(compile) 과정 ... 111
오브젝트 파일(object file) ... 115
링킹(linking) ... 116
재배치(relocation) ... 119
로딩 ... 119
정리 ... 120
Story 10 포인터의 활용과 최적화
포인터는 큰 데이터를 이동시키는 효과적인 방법이다 ... 124
포인터 이럴 땐 선택이 아니라 필수 ... 128
힙 영역에 접근하는 방법 ... 131
포인터를 빠르게 하는 방법 : 포인터 체인을 제거하라 ... 135
정리 ... 136
Story 11 C는 메모리를 어떻게 사용하는가
C의 메모리 ... 138
static ... 140
extern ... 143
auto ... 144
register ... 146
정리 ... 147
Story 12 변수를 잘 사용하는 건 최적화의 기본
적절한 데이터 타입을 선택하라 ... 150
전역 변수 최적화 ... 152
지역 변수 최적화 ... 153
정적 변수 최적화 ... 155
타입 한정자 ... 156
const ... 156
정리 ... 159
Story 13 집합원소 저장의 효율적 방법
배열 액세스, 어느 방법이 좋은가? ... 161
배열 인덱스의 활용 ... 164
구조체의 패딩 비트를 줄여라 ... 165
유니온의 활용 ... 168
정리 ... 171
Story 14 메모리는 돈이다
ROM 최적화 ... 175
RAM 최적화 ... 179
정리 ... 185
Story 15 함수, 생각 없이 쓰면 낭패 본다
매크로 함수 ... 188
인라인 ... 190
재귀 함수의 최적화 ... 192
함수 분기에서 돌아오기까지 ... 195
함수에서 인자를 잘 활용하는 팁 ... 196
리프 함수(Leaf function)의 활용 ... 199
정리 ... 200
Story 16 if가 좋을까 switch가 좋을까?
분기문 최적화 ... 202
정리 ... 212
Story 17 돌리는 것도 요령껏
좀 덜 돌면 안되겠니? → 루프 풀기(Loop Unrolling) ... 215
가까운 루프는 합쳐라! → 루프 병합(Loop Fusion) ... 218
루프와 상관없는 계산을 루프 밖으로 쫓아내라 ... 219
필요 없이 루프를 끝까지 돌리지 마라 ... 221
루프 변수 ... 221
루프를 빠르게 하는 표현 ... 222
함수 루프 ... 223
정리 ... 224
Story 18 최적화를 부르는 표현
비용이 낮은 연산자를 선택하라 ... 226
short circuit 원리의 활용 ... 228
연관된 표현은 묶어서 처리하라 ... 229
고민되는 실수 연산의 표현 ... 231
비트 플래그의 토글링(toggling) ... 234
유니온의 활용 ... 236
조건부 실행 ... 236
정리 ... 238
Story 19 컴파일러를 사용한 최적화
어셈블리 코드를 보자 ... 239
상수 대체(Constant Folding) ... 243
중복표현 제거 ... 245
데드 코드(Dead Code) 제거 ... 247
연산 강도 경감(Strength Reduction) ... 249
정리 ... 251
Story 20 ARM에서의 최적화
APCS ... 252
루프 최적화 ... 255
ARM 레지스터 활용 팁 ... 258
전역 변수를 사용하지 않는다 ... 260
지역 변수 타입 ... 263
함수 최적화 ... 264
연산 최적화 ... 267
정리 ... 270
찾아보기 ... 272
더보기 닫기