Day 1 - Modular(%) vs Bit-wise AND(&)
·
IDEC 교육/Embedded C
Modular(%): 나머지를 구하는 연산자 Bit-wise AND(&): 논리적 AND 연산자 '&'가 '%'연산을 대체k = 1011_0110k % 16 = 0000_0110k & 0x0F = 0000_0110특수한 Case에서만 사용가능(2의 제곱)연산 속도는 bit 연산이 5배 빠름Modular는 Library 사용Bit-wise는 ALU에서 바로 연산Examplek의 값이 0, 1, 2, 3 을 반복하는 코드int main(){ int k = 0; while(1){ printf("%d", k++); k = k & 3 ; } return 0;} 10000, 1000, 100, 10 자리수 출력하는 코드int k = 123456;int main()..
Day 1 - Build 과정
·
IDEC 교육/Embedded C
Keil에서 Buildaxf / bin(optional) / hex(optional)axf: windows에서의 exe와 같은 실행 파일(elf = Executable and Linkable Format 의 변형)Code & Data (bin의 내용): .text(Code) / .ro / .rwDebug 정보: 소스 코드와 기계어 코드 간의 매핑을 위한 라인 번호, 함수 이름, 변수 이름 등의 정보Symbol Table: 프로그램 내의 함수와 변수의 이름 및 주소 정보를 포함Section Header & MetaData: 각 섹션의 시작 주소, 크기, 속성 등 상세 정보를 제공Relocation 정보(optional): 실행 시 주소 조정을 위해 필요한 경우, 코드와 데이터 위치를 재배치할 수 있는 정보..
Day 1 - Keil Settings & Global, Local Variable
·
IDEC 교육/Embedded C
Keil ToolProject SettingsTarget SettingsAddress of Variablemain.c#include #include "ARMCM3.h"#include "core_cm3.h"int gVar;int fputc(int c, FILE * fp){ ITM_SendChar(c); return c;}void MyFunc(){ int a, b; printf("%#010x \r\n", (int)&gVar); printf("%#010x, %#010x \r\n", (int)&a, (int)&b); return ;}void MyFunc2(){ MyFunc(); return ;}int main(){ printf("%#010x \r\n", (int)&gVar); MyFunc(); MyFun..