명령어집합의 여러 잠재적 문제점들 중에서 거의 극복하기 불가능한 문제 중 하나는 메모리 주소가 너무 작은 것입니다. x86은 16비트에서 32비트로, 나중에는 64비트까지 성공적으로 주소를 확장하였지만, 대부분의 다른 프로세서들은 이를 따라하지 못했습니다. ARM설계자들은 자신들의 32비트 주소 컴퓨터에 대한 비판을 인지하고 2007년에 설계를 시작해 2013년에 64비트 주소버전을 내놓았습니다. MIPS를 이해하고 있다면 64비트 버전인 ARMv8은 매우 쉽게 이해할 수 있습니다. 첫째로, MIPS에 없는 ARMv7의 이상한 특징들을 사실상 거의 다 없애 버렸습니다. - v7에서 거의 모든 명령어에 있던 조건부 실행 필드가 없어졌다. - v7에서 복잡한 과정을 거쳐 계산해야 했던 수치 필드를 단순한 1..
ARM은 임베디드용으로는 가장 인기 있는 명령어 집합 구조입니다. ARM은 원래 Acorn RISC Machine의 약자였는데 후에 Advanced RISC Machine으로 바뀌었습니다. ARM은 MIPS와 같은 해에 나왔으며 같은 설계 철학을 따르고 있습니다. 다음 그림은 두 프로게서 사이의 유사성에 대해 보여주고 있습니다. 가장 큰 차이는 MIPS는 레지스터가 더 많고 ARM은 주소지정 방식이 더 많다는 점입니다. 주소지정 방식 MIPS와 달리 ARM에는 상수 0을 갖고 있는 레지스터가 없습니다. MIPS는 겨우 3개의 단순한 데이터 주소지정 방식을 갖고 있는 반면 ARM은 9개의 주소지정 방식을 갖고 있으며 이 중에는 상당히 복잡한 계산을 하는 방식도 포함되어 있습니다. 예를들면 레지스터를 원하는..
조건부 명령 if / else와 같은 Arm 명령어이다. CMP reg1, reg2 ; r1, r2를 비교해라 . 여기서 비교란 뺄셈을 하라는 의미이다. 만약 두 값이 같으면 두 값을 뺀값은 0이 될것이다. > zero flag BEQ L1 ; 이전 계산이 0이면 L1으로 분기하라 BNE L1 ; 이전 계산이 0이 아니면 L1으로 분기하라 B exit ; 무조건 분기 하라 C code if (i == j) f = g+h; else f = g-h Compiled ARM code CMP r3, r4 BNE Else ; go to Else if i != j ADD r0, r1, r2 = f = g+h(skipped if i != j) B Exit Else ; SUB r0, r1, r2 ; f = g + h (..