조회 수 1144 추천 수 4 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

난데없이 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 어셈블리를 배워볼 생각이 드시는 분 안 계시죠? ㅎㅎㅎ

?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
» 언어/기타 ARM 어셈블리 입문 (장벽을 높이는) 이야기? 원스타 2006.08.16 1144
363 언어/기타 양자 컴퓨터에 대해 여러 가지를 알아보니... 아란 2006.08.16 956
362 RPG Maker 대화창을 화사하게 장식해볼까요? 장식은 정말 쉽죠? 노친네 2006.08.17 1748
361 언어/기타 시퀸스 컨테이너 - 벡터 연지 2006.08.17 810
360 언어/기타 for문 (수정) 연지 2006.08.17 1140
359 언어/기타 ARM 어셈블리 강좌 #0: 무념 원스타 2006.08.17 1718
358 언어/기타 ARM 어셈블리 강좌 #1: ARM 뜯어보기 원스타 2006.08.17 1380
357 RPG Maker 다들 연세가 어떻게들 되시나요 MrGeek 2006.08.18 1086
356 언어/기타 대입/쉬프트/삼항/cast/콤머/sizeof 연산자 (수정) 연지 2006.08.18 914
355 언어/기타 반투명 대화창이 필요해애애애~ 픽쳐 대화창 만들기 반쪽민재궁수 2006.08.19 680
354 언어/기타 잡담반이 돌아왔습니다-_-;; 아란 2006.08.20 848
353 언어/기타 #pragma warning 피군 2006.08.20 993
352 RPG Maker srpg의 이동 시스템 창공의곰팅이 2006.08.21 1536
351 언어/기타 점점 개강이 다가옵니다. file 아란 2006.08.21 838
350 언어/기타 MG F91이 와서... 아란 2006.08.22 890
349 언어/기타 콤보 스크립트 귀여븐닌자 2006.08.23 2297
348 언어/기타 초코군 2006.08.25 966
347 언어/기타 [연재] 비주얼 노벨을 만들자! 1강. 게임 디스플레이를 디자인하자! : vnap.ini 건드리기 (3) file 만삐 2006.08.25 643
346 언어/기타 [연재] 비주얼노벨을 만들자! 1강. 게임 디스플레이를 디자인하자! : vnap.ini 건드리기 (2) 만삐 2006.08.25 559
345 언어/기타 변수를 최대한 이해해볼까? 다크세이버™ 2006.08.26 595
Board Pagination Prev 1 ... 28 29 30 31 32 33 34 35 36 37 ... 51 Next
/ 51






[개인정보취급방침] | [이용약관] | [제휴문의] | [후원창구] | [인디사이드연혁]

Copyright © 1999 - 2016 INdiSide.com/(주)씨엘쓰리디 All Rights Reserved.
인디사이드 운영자 : 천무(이지선) | kernys(김원배) | 사신지(김병국)