본문 바로가기

전체 글

(484)
arm instruction(명령어) - cmn 가끔 아래와 같은 cmn ARM 어셈블리어를 볼 수가 있는데 좀 더 깊히 살펴보도록 하겠습니다. cmn r4,#0x1 평소에는 잘 알고 있는 것 같은데 실제 이슈를 볼 때 ARM Instruction을 만나면 머리가 흐릿해지면서 가물가물 해지는 경우가 많아서요. ARM 공식 사이트에 가면 cmn을 음수 비교 구문이라고 소개해 놓았습니다. http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0204ik/Cihiddid.html 구문 CMN{cond} Rn, Operand2 CMN 명령어는 Rn의 값에 Operand2의 값을 더합니다. 이 명령어는 결과가 버려진다는 점을 제외하고 ADDS 명령어와 동일합니다. 그럼 아래 명령어를 실제 Trace32..
arm instruction(명령어) - strleb strleb란 명령어를 본 적이 있나요? 전 잘 몰라서요, 이 명령어가 어떻게 동작하는지 테스트를 해봤거든요. 그 내용을 정리해서 업데이트할께요. 제가 만난 명령어는 아래와 같거든요. cmp r3, #2 @ 1 //FFFFFFCC 00000000 00000000 00000000 NSD:C000A010| 00000000 00000000 00000000 00000000 ARM사에 계신 ARM개발자님께서 왜 이런 명령어를 개발하셨을까요? 아마 명령어당 ARM core의 실행 횟수를 줄이려고 이런 명령어를 만드신게 아닌 가 생각되네요. 참, 대단하신 것 같네요.
arm instruction(명령어) - ldm "ldm r6,{r2-r3}" 명령어를 Trace32로 실행한 과정을 업데이트할께요. R6 레지스터가 C011AACC 주소를 가르키고 있고, C011AACC 주소에는 10001000 값이 담겨져 있어요. [Before] N _ R0 0 R8 0 ^S+ ^Stack_+ Z _ R1 0 R9 0 C _ R2 0 R10 0 V _ R3 0 R11 0 Q _ R4 0 R12 0 R5 0 R13 D000D000 0 _ R6 C011AACC R14 0 1 _ R7 0 PC C01A7310 2 _ SPSR 10 CPSR 01D3 (where) _____address|________0________4________8________C NSD:C011AAC0| E59F2198 E59F3198 E88B000C>1000100..
arm - ldrd 명령어 ldrd 명령어에 대해서 소개하고자 해요. 아래와 같은 ldr 명령어는 많이 봤는데, 갑자기 이런 명령어가 보이니 당황스럽기도 하네요. ldr r2, [r4,#0x8] 자 이제, 구체적으로 아래 Instruction이 실행된 후 레지스터가 어떻게 업데이트 되는지 살펴볼께요. ldrd r2,r3,[r4,#0x8] 참고로 R4는 0xD000D000 인데요. 0xD000D000+0x8 에 위치한 공간에 아래 값을 갖고 있네요. _____address|________0________4________8________C NSD:D000D000| 00000000 11111111 >22222222 33333333 NSD:D000D010| 00000000 00000000 00000000 00000000 NSD:D000D..
[ARM프로세서] 시스템 반도체 개발 과정 오버뷰(Overview) 이번 포스트에서는 반도체 개발 과정에 대해서 알아보겠습니다. 1. 스팩 확정, RTL 설계(베릴로그), 합성 검증 먼저 반도체 회사의 마케팅 부서에서 반도체의 스팩을 정합니다. 이후 RTL이란 툴을 사용해 C 코딩과 같이 로직을 코딩합니다. RTL로 반도체 로직을 설계하는 것이라 볼 수 있죠. 이어서 설계한 내용을 바탕으로 툴을 돌립니다. 이를 Synthesis 혹은 합성이라고 부르기도 합니다. 합성한 결과를 갖고 PC 환경에서 시뮬레이터를 돌려서 검증을 시도합니다. 이 과정을 거쳐서 반도체 기능을 수행하는 반도체 모듈이 만들어지게 되는 것이죠. 2. FPGA 검증/Back-End 개발 이렇게 충분히 시뮬레이션을 한 다음에, 그 결과를 FPGA에 넣어서 시스템 반도체에 대한 검증을 시도합니다. FPGA는..
[ARM프로세서] 트러스트존(Trustzone) 이란 ARM 아키텍처는 운영체제에서 다양한 구조로 시스템을 설계할 수 있게 부가 기능(Extensions)을 지원합니다. 그 중 대표적인 기능이 트러스트 존(Trustzone)입니다. 트러스트 존(Trustzone) 소개 트러스트 존은 ARM 아키텍처에서 지원하는 Security Extention(보완 확장) 기능으로, 여러 보안 애플리케이션이 ARM의 트러스트 존을 활용해 구현돼 있습니다. 다른 관점으로 보완을 위한 추가 기능이라고 볼 수 있습니다. ARM 아키텍처에서 보완을 위한 트러스트 존을 지원하는 이유는 무엇일까요? 바로 해킹으로부터 시스템을 보호하기 위해서인데요, 사실 예전부터 소프트웨어 분야에서 하드웨어 제조 분야까지 보안을 위협하는 해킹의 위험이 항상 존재했습니다. 컴퓨터의 기술이 발전함에 따라..
[ARM프로세서] CPU 캐시(Cache)란 이번 포스트에서는 캐시의 기본 개념에 대해 소개하고 ARM 프로세서에 적용된 캐시의 개념에 대해 설명하겠습니다. CPU 캐시(Cache)란 캐시란 컴퓨터 용어로 캐시는 데이터나 값을 미리 복사해 놓는 임시 장소를 의미합니다. 캐시는 자주 사용되는 데이터를 임시 저장해 데이터에 접근하는 속도를 최적화하기 위해 사용됩니다. 다양한 소프트웨어 분야에서 캐시가 사용되는데 CPU를 설계할 때도 캐시를 사용해 CPU의 실행 속도를 최적화합니다. 그렇다면 CPU에서 캐시는 어떤 방식으로 사용이 될까요? 캐시는 어떤 형태일까요? 의문이 계속 생깁니다. 먼저 CPU에서 사용되는 캐시에 대해 알아봅시다. 사실 처음 CPU를 연구했던 과학자들은 처음부터 캐시를 CPU에 적용한 것은 아니었습니다. 오랫동안 CPU를 설계하는 ..
[ARM프로세서] 익셉션(Exception) 소개 ARM 프로세서는 익셉션을 지원하며 운영체제의 ARM 프로세서가 지원하는 익셉션을 활용해 세부 기능을 구현합니다. 익셉션의 타입에 대해 알아보고 익셉션의 세부 동작에 대해 살펴보겠습니다. ARMv7과 ARMv8 아키텍처 별로 익셉션 벡터 테이블의 종류가 상이하지만, 익셉션이 동작하는 방식은 유사하므로 ARMv7 아키텍처 기준으로 익셉션에 대해 소개합니다. 익셉션의 종류 익셉션의 세부 동작에 대해 설명드리기 전에 먼저 익셉션의 타입에 대해 알아봅시다. 다음은 ARM의 익셉션의 종류입니다. 표 1.3 익셉션의 타입과 종류 먼저 메모리 어보트 타입으로 분류되는 익셉션에 대해 살펴봅시다. 다음은 메모리 어보트 타입으로 분류되는 익셉션입니다. ❑ Undefined Instruction: ARM 코어가 어셈블리 명..