조회 수 1181 추천 수 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
번호 분류 제목 글쓴이 날짜 조회 수
701 언어/기타 [마지막 3명 모집] [취업연계무료교육] VR/AR 게임 콘텐츠 전문가 양성 과정 교육생 모집 file 황금상자 2017.07.14 702
700 언어/기타 JSON parser 변환데이터 저장시 생기는 Object Too Deep 해결하기 title: 댓글러lklslel 2016.12.24 851
699 언어/기타 앙뜨프리너십에서 해커톤 부트캠프 모집중이네요 file 마나님이 2016.11.08 908
698 언어/기타 게임의 버전을 짜 보자! - 유의적 버전 2.0.0 Yanggaeng 2016.06.07 1123
697 언어/기타 RPG게임 뻔한요소들. 8 title: 천무천무 2015.10.05 1644
696 언어/기타 자바스크립트와 관련해서 참고할 만한 사이트들 3 MARCO 2015.10.04 921
695 언어/기타 꿀잼이군요! 3 사람님[대회참가] 2015.05.20 873
694 언어/기타 [강의링크] 대비법칙-색상대비-밀당의 재미 약한 반대색 설계 title: 천무천무 2015.04.02 636
693 언어/기타 오다 주웠습니다. 9 사람님[대회참가] 2015.03.30 917
692 언어/기타 무료 이미지 사이트 Pixabay! 9 file 나작소 2015.03.28 909
691 언어/기타 페인터(코럴) 브러쉬 세팅 공유 :) 8 file 샤이귤군 2015.03.28 1577
690 언어/기타 유화재료 & 기법 살짝 팁 공유 (매우 깁니다 -3-) 11 file 샤이귤군 2015.03.28 912
689 언어/기타 픽사에서 텍스쳐 꽁짜로 뿌림ㅋ 8 사람님(대회참가) 2015.03.26 912
688 언어/기타 멀티해상도에 따른 속도와 가속도 값의 조절 1 MiDtics2 2013.01.13 859
687 언어/기타 [Android] 멀티스크린 노하우 2 MiDtics2 2012.10.27 1516
686 언어/기타 [js] 코드 압축 걸음마 2 1 2012.06.12 1059
685 언어/기타 [css] css 겉핥기 핥핥 1 file 2012.05.03 938
684 언어/기타 [css, js] form - select안의 option들에 스타일 적용하기 4 file 2012.04.28 5364
683 언어/기타 게임,개발기획의 기초 5 Grand 2011.08.01 2901
682 언어/기타 지형설정에서 원경(앞, 뒤)가 가지는 역할 file Dicky 2011.07.28 2491
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 36 Next
/ 36


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

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