ARMV8

  • 포스트 갯수: 45
  • 조회수:
  • ARTIFACT

[Arm프로세서] Armv8 익셉션 레벨: PSTATE와 currentEL 레지스터

By Guillermo Austin Kim | 2021년 11월 4일 | 
Armv8 아키텍처는 프로세서의 상태를 PSTATE를 통해 제공하는데, 이 정보 중에 익셉션 레벨이 포함돼 있습니다. 먼저 Armv8 아키텍처 문서를 보면서 PSTATE가 무엇인지 알아봅시다. (출처: DDI0487Fc_armv8_arm.pdf)D1.7 Process state, PSTATE In the Armv8-A architecture, Process state or PSTATE is an abstraction of process state information. 스팩 문서의 내용을 해석하면 PSTATE는 프로세서의 다양한 상태 정보를 담고 있는 인터페이스(Abstraction)이라고 볼 수 있습니다. PSTATE에서 프로세서의 상태는 PSTATE.field에서 확인할 수 있으며, 이 필드 중

[Arm프로세서] Armv8 익셉션 레벨이란

By Guillermo Austin Kim | 2021년 10월 22일 | 
익셉션 레벨은 무엇일까요? 먼저 익셉션 레벨을 가장 명확하게 설명하는 Arm 아키텍처 문서를 보면서 익셉션 레벨을 소개하겠습니다. 익셉션 레벨에 대한 Arm 스팩 문서 분석 다음 Arm 스팩 문서를 분석하면서 익셉션 레벨을 배워 봅시다. (출처: ARMv8-A_Architecture_Reference_Manual_(Issue_A.a)) D1.1 Exception levels The ARMv8-A architecture defines a set of Exception levels, EL0 to EL3, where:• If ELn is the Exception level, increased values of n indicate increased software execution privilege.

[리눅스커널][Arm64] 유저 공간(EL0)에서 시스템 콜 번호는 어떻게 지정할까?

By Guillermo Austin Kim | 2021년 8월 21일 | 
이번에는 64비트 기반 리눅스 커널에서 구동되는 라즈비안에서 시스템 콜 번호를 확인해 보겠습니다. 이를 위해 바이너리 유틸리티를 활용해 libc 라이브러리를 어셈블리 명령어로 분석할 필요가 있습니다. root@raspberrypi:/usr# find . -name libc.a./lib/aarch64-linux-gnu/libc.aroot@raspberrypi:/usr# objdump -d ./lib/aarch64-linux-gnu/libc.a > code_libc.c 위 명령어로 '/usr/lib/aarch64-linux-gnu/libc.a' 라이브러리 파일을 어셈블리 코드로 변환하게 됩니다. x8 레지스터에서 시스템 콜 번호를 지정 __libc_write() 함수를 분석하면 x8 레지스터에 시

[Arm프로세서] AAPCS: Armv8: 스택과 관련된 명령어 - ldp

By Guillermo Austin Kim | 2021년 8월 11일 | 
Armv7 아키텍처에서 push 명령어를 실행한 후 함수가 종료되기 직전에 반드시 실행되는 명령어가 pop입니다. 마찬가지로 Armv8 아키텍처에서 stp 명령어를 사용해 스택에 레지스터를 푸시한 후, 함수를 종료하기 직전에 실행되는 명령어는 ldp입니다. Arm 스팩 문서에서 ldp 명령어 분석하기 이번에도 Arm 스팩 문서를 보면서 ldp 명령어에 대해 살펴봅시다. C6.2.129 LDPLoad Pair of Registers calculates an address from a base register value and an immediate offset, loads two 32-bit words or two 64-bit doublewords from memory, and writes them