언어/기타
2006.08.17 08:19

ARM 어셈블리 강좌 #1: ARM 뜯어보기

조회 수 1411 추천 수 3 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

ARM 어셈블리를 공부하기 전에, 우선 ARM 코어의 구조를 알아 두면 좋습니다.


 


============== 지겨운 게 싫으시면 여기는 건너뛰어도 됩니다만================


 


ARM 프로세서의 코어는 RISC를 채택하고 있습니다.


 


그런데... RISC 프로세서의 특성을 아시나요?


 


몇 가지를 이야기해 보겠습니다.


 


우선, RISC 프로세서에는 많은 수의 레지스터가 있고 그것이 대부분 범용으로 사용됩니다.


 


또, CPU에서 메모리를 직접 수정할 수 없습니다. 메모리의 내용을 레지스터로 복사해서 수정하고, 다시 가져다 넣어야 합니다. 이것을 Load-Store 아키텍처라고 하지요.


 


자. 다른 중요한 특성을 설명하기 위해서 잠시 CISC 프로세서 이야기를 해 보죠.


 


CISC 프로세서는, CPU에서 사용되는 명령어 개수가 많고, 각 명령어는 복잡한 기능을 수행합니다. 또, 각 명령어의 길이가 일정하지 않습니다. 1바이트짜리 명령어가 있는가 하면, 4바이트짜리도 있지요.


 


즉, CISC형 CPU에서는, CPU를 얼마나 잘 만드느냐에 따라서 프로그램의 실행 속도가 좌우됩니다.


 


반면, RISC형 CPU는 CISC형 CPU에 비해 명령어 개수가 적은 편입니다. 그리고, 각 명령어의 실행 속도는 아주 빠르며 명령어의 길이도 일정합니다.


 


이 덕분에 RISC형 CPU는 명령어들을 얼마나 잘 조합해서 사용하느냐에 따라 실행 속도가 달라지죠.


 


즉 RISC형 CPU는 "컴파일러"에 속도의 영향을 많이 받습니다.


 


===================== 여기까지요 ========================


 


그런 거죠.


 


그럼... 먼저 ARM 프로세서에서 중요한 요소인 레지스터에 대해 알아보도록 하지요


 


레지스터란, 프로세서 안에서 사용하는 임시 저장 공간입니다.


 


CPU 안에서는 이 레지스터에 저장된 내용을 가지고 대부분의 연산을 수행하지요.


 


ARM 프로세서는 r0, r1, r2, r3, ... r15 까지의 32비트짜리 범용 레지스터를 가지고 있습니다.


 


이 레지스터들은 마음대로 지지고 볶아도 되지만... r13, r14, r15 레지스터 3개는 함부로 건드리면 안됩니다.


 


r13은 스택 포인터를 가리키고, r14는 함수의 리턴 주소를, r15는 현재 프로그램의 수행 위치를 가지고 있기 때문이지요.


 


그리고, cpsr과 spsr이라는 프로세서 상태 레지스터가 있는데, 이건 그냥은 건드릴 수도 없고 하니 넘어갈까요?


 


... 안 됩니다.


 


cpsr은 CPU의 상태를 표현하는 32비트짜리 레지스터인데요, 여기에 "상태 플래그"를 담고 있습니다. 32비트니까 32개의 플래그가 들어갈 수 있을 것 같습니다만, 프로세서 모드, 인터럽트 마스크 등 여러가지 정보와 자리를 함께 쓴다는 사정 때문에 지금은 NZCVQ라는 5개의 플래그만 들어갑니다.


 


이 플래그에 대해서는... 아주 간단히 나타내 보죠..


 


N: 결과가 음수인 경우


Z: 결과가 제로 (0) 인 경우


C: 부호 없는 캐리가 발생한 경우


V: 부호 있는 오버플로우가 발생한 경우


Q: 오버플로우나 포화가 발생한 경우


 


[SW_B#] 참 쉽죠?[#SW_B] (밥아저씨 버전)


 


다음 강좌부터는 ARM 명령어에 들어갈 지도 모릅니다.


 

?

  1. 물체 밀어서 움직이는 이벤트 조금 더 쉽게 하는 법

    Date2018.01.02 CategoryRPG Maker Byzero? Views644
    Read More
  2. [마지막 3명 모집] [취업연계무료교육] VR/AR 게임 콘텐츠 전문가 양성 과정 교육생 모집

    Date2017.07.14 Category언어/기타 By황금상자 Views702
    Read More
  3. rpg vxa 로 겜만들때 데미지 설정 공식[링크]

    Date2017.06.08 CategoryRPG Maker By준E Views740
    Read More
  4. [꿀팁] 간단하게 만들 수 있는 실시간 전투 시스템

    Date2017.03.31 CategoryRPG Maker By준E Views2019
    Read More
  5. JSON parser 변환데이터 저장시 생기는 Object Too Deep 해결하기

    Date2016.12.24 Category언어/기타 Bytitle: 댓글러lklslel Views851
    Read More
  6. 앙뜨프리너십에서 해커톤 부트캠프 모집중이네요

    Date2016.11.08 Category언어/기타 By마나님이 Views908
    Read More
  7. RPG MV에서 플러그인 오류의 원인에 대하여

    Date2016.07.08 CategoryRPG Maker Bytitle: 댓글러lklslel Views2359
    Read More
  8. RPG MV 게임 도중에 윈도우 스킨 파일 자체를 통째로 바꿔버리는 방법 (출처: HIME)

    Date2016.07.08 CategoryRPG Maker By최저 Views1627
    Read More
  9. 게임의 버전을 짜 보자! - 유의적 버전 2.0.0

    Date2016.06.07 Category언어/기타 ByYanggaeng Views1123
    Read More
  10. 텍스트 대화 도중 메뉴 여는 방법을 알아냈습니다!

    Date2016.03.12 CategoryRPG Maker By정궈니 Views2938
    Read More
  11. rpgmv 마우스 지원과 터치 지원이 되니.

    Date2015.10.25 CategoryRPG Maker By팡소리 Views1011
    Read More
  12. RPG Maker MV 와 AJAX를 이용한 웹통신 관련 영상.

    Date2015.10.25 CategoryRPG Maker ByHT9MAN Views2246
    Read More
  13. RPG게임 뻔한요소들.

    Date2015.10.05 Category언어/기타 Bytitle: 천무천무 Views1644
    Read More
  14. 자바스크립트와 관련해서 참고할 만한 사이트들

    Date2015.10.04 Category언어/기타 ByMARCO Views921
    Read More
  15. 꿀잼이군요!

    Date2015.05.20 Category언어/기타 By사람님[대회참가] Views873
    Read More
  16. [RPG2000/3 팁] 간편한 이벤트 단축키

    Date2015.04.06 CategoryRPG Maker Bytitle: 자게이하앵 Views1833
    Read More
  17. [RPG2000/3 팁] 간편한 이벤트 단축키

    Date2015.04.05 CategoryRPG Maker Bytitle: 자게이하앵 Views748
    Read More
  18. [강의링크] 대비법칙-색상대비-밀당의 재미 약한 반대색 설계

    Date2015.04.02 Category언어/기타 Bytitle: 천무천무 Views636
    Read More
  19. 오다 주웠습니다.

    Date2015.03.30 Category언어/기타 By사람님[대회참가] Views917
    Read More
  20. 무료 이미지 사이트 Pixabay!

    Date2015.03.28 Category언어/기타 By나작소 Views909
    Read More
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 51 Next
/ 51


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

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