언어 ARM 어셈블리 입문 (장벽을 높이는) 이야기?
2006.08.16 06:37
난데없이 ARM 어셈블리에 대해 대충 써 보려고 합니다.
제가 관심을 가지고 있는 게임기인 GBA, GP32, GP2X, 그리고 곧 나올 XGP에는 모두 ARM CPU가 사용되고 있습니다.
잘 찾아보면, ARM 계열 CPU는 게임기 이외에도 많은 종류의 임베디드 기기에 사용되고 있지요.
PDA부터 시작해서 PMP, 휴대폰, 인터넷 공유기, 심지어는 냉장고, TV까지도 ARM CPU가 들어 있습니다. (물론 안 들어간 넘도 있으니 뭐라진 마세요 -ㅂ-)
위에 열거한 게임기들은 모두 C/C++ 개발 환경을 지원합니다. 개발자는 그저 C나 C++을 사용해서 게임을 만들어내면 그만이죠.
그런데 왜 어셈블리?
보통 ARM용 개발 환경으로 많이 쓰이는 C/C++ 컴파일러에는 ARM ADS/SDT, GCC, eMbedded Visual C++ 정도가 있습니다.
이 중에 VC++는 MS 전용이니까 저~리로 빠지시구요. ARM ADS나 SDT는 무지 비쌉니다. 4000 달러라더군요.
결국 남는 건 공짜로 쓸 수 있는 GCC 정도겠네요.
그런데 이 GCC라는 녀석은 (ARM의 경우) 최적화에 신경을 잘 안 써줍니다.
똑같은 프로그램을 짜면 ADS보다 약 3~5배정도 느린 코드가 나오지요.
그대로 C만 가지고 게임을 만든다면 빠른 속도는 기대하지 못하는 거죠.
이 안습한 상황을 극복하려면 어쨌건 어셈블리가 절실히 필요합니다.
그런데, 어셈블리 하면 떠오르는 단어가 있지 않아요?
"캐어려워"
이전에 PC용 어셈블리 (x86 계열)를 1분이라도 공부해 보셨다면, 그 조잡성과 무지막지한 분량에 상당한 압박을 느껴 보셨을 겁니다 -ㅁ-;;
하지만 다행히 ARM은 RISC 계열입니다. 알아야 할 명령어 수가 상당히 적지요..
게다가 상당히 잘 체계화되어 있고 읽거나 쓰기도 편한 구조입니다.
프로그래머가 고민할 부분은, 어떻게 하면 좀 더 빠른 코드를 만들 수 있을까 하는 거지요.
잘 작성한 어셈블리 코드는 C 언어 코드에 비해 상당히 빠릅니다.
GCC 기준으로 테스트를 해 봤는데, 심한 경우 약 10배까지도 속도 차이가 나더군요 -ㅁ-
특히나, CPU가 느린 GBA 게임을 만든다면 어셈블리가 필수가 되겠군요.
GBA의 CPU는 ARM7TDMI에, 16mhz밖에는 되지 않거든요.
이 글을 읽고 ARM 어셈블리를 배워볼 생각이 드시는 분 안 계시죠? ㅎㅎㅎ
댓글 4
-
아란
2006.08.16 06:47
-
초코군
2006.08.16 17:34
전 주로 어셈블러 어를 해킹할떄 씁니다 =ㅅ=;; 켈켈;;;|+rp2+|2170|+rp3+|acoc_board_ideatip -
초코군
2006.08.16 17:35
어셈블러 강좌는? 윈스타님이 올리시는건가요? +_+|+rp2+|2171|+rp3+|acoc_board_ideatip -
원스타
2006.08.17 06:19
잇힛힛 강좌 올라갑니다. 보시고 마음껏 실망하셔도 좋스빈다|+rp2+|2181|+rp3+|acoc_board_ideatip
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
289 | 다들 연세가 어떻게들 되시나요 [4] | MrGeek | 2006.08.18 | 365 |
288 | ARM 어셈블리 강좌 #1: ARM 뜯어보기 [1] | 원스타 | 2006.08.17 | 452 |
287 | ARM 어셈블리 강좌 #0: 무념 [6] | 원스타 | 2006.08.17 | 345 |
286 | for문 (수정) [1] | 연지 | 2006.08.17 | 221 |
285 | 시퀸스 컨테이너 - 벡터 [1] | 연지 | 2006.08.17 | 176 |
284 | 대화창을 화사하게 장식해볼까요? 장식은 정말 쉽죠? [10] | 노친네 | 2006.08.17 | 1175 |
283 | 양자 컴퓨터에 대해 여러 가지를 알아보니... [2] | 아란 | 2006.08.16 | 217 |
» | ARM 어셈블리 입문 (장벽을 높이는) 이야기? [4] | 원스타 | 2006.08.16 | 316 |
281 | [ 서버이전 끝남 ] [3] | 초코군 | 2006.08.15 | 213 |
280 | [서버이전공지] [1] | 아란 | 2006.08.15 | 205 |
279 | 나의 크링이!! [3] | 아란 | 2006.08.14 | 252 |
278 | 문자 입출력 함수 (수정) [5] | 연지 | 2006.08.14 | 253 |
277 | 자유 게시판에서 한바탕 난리를 보신 분들도 있을 겁니다. [1] | 아란 | 2006.08.13 | 235 |
276 | [TIP]대기 0초 [19] | Yggdrasil | 2006.08.11 | 1763 |
275 | 양자컴퓨터(量子~· Quantum Computer) [4] | 아란 | 2006.08.11 | 254 |
274 | 양자론(Quantum Theory) [2] | 아란 | 2006.08.11 | 336 |
273 | 마을 칩셋부탁 드려요 ㅠㅠ 제발요... 아니면 집 칩셋이라도.. [14] | RPG만들기2003매니 | 2006.08.11 | 430 |
272 | C언어의 기초문법규칙! [4] | 샤르엘 | 2006.08.10 | 344 |
271 | C언어를 새발로 먹기? 3화. [19] | 초코군 | 2006.08.10 | 511 |
270 | 언어정보교류 게시판 통계 [3] | 아란 | 2006.08.10 | 250 |
그것에 진화 단계인 어셈블리는... 그래도 캐어려워요.|+rp2+|2168|+rp3+|acoc_board_ideatip