ARM Instruction Set: Block Data Transfer (LDM, STM)
ARM 아키텍처에서는 여러 개의 레지스터를 한 번에 메모리에 읽거나 메모리에 쓰는 데 사용되는 LDM (Load Multiple)과 STM (Store Multiple) 명령어를 제공한다. 이 글에서는 LDM 과 STM 명령어에 대해 알아본다. Block…
ARM 아키텍처에서는 여러 개의 레지스터를 한 번에 메모리에 읽거나 메모리에 쓰는 데 사용되는 LDM (Load Multiple)과 STM (Store Multiple) 명령어를 제공한다. 이 글에서는 LDM 과 STM 명령어에 대해 알아본다. Block…
ARM 아키텍처에서는 메모리에서 데이터를 로드하거나 메모리에 데이터를 저장하는 데 사용되는 LDR (Load Register)와 STR (Store Register) 명령어가 있다. 이 글에서는 LDR 과 STR 명령어에 대해 알아본다. Single data transfer instructions…
ARM 아키텍처에서는 곱셈과 곱셈 누적 연산을 위한 명령어인 MUL (Multiply)과 MLA (Multiply-Accumulate)를 제공한다. 이 글에서는 MUL, MLA 명령어에 대해 알아본다. Multiply instructions 곱셈과 곱셈-누산 명령은 8비트 Booth 알고리즘을 사용하여 정수…
ARM 아키텍처에서는 프로그램 상태 레지스터(Program Status Register, PSR)의 값을 읽거나 쓰는 데에 사용되는 명령어인 MRS (Move to Register from PSR)와 MSR (Move to PSR from Register)이 있다. 이 글에서는 MRS,…
ARM 아키텍처에서는 데이터 처리 명령어를 사용하여 레지스터 간의 연산을 수행할 수 있다. 데이터 처리 명령어는 산술 연산, 논리 연산, 시프트 연산 등을 포함한다. 이 글에서는 ARM Data Processing 명령어에 대해…
ARM 아키텍처는 branch(분기) 명령어를 통해 프로그램 흐름을 제어할 수 있다. B (Branch)와 BL (Branch with Link)는 주로 조건 없이 레이블로의 분기를 담당하며, BL은 현재 주소를 링크 레지스터에 저장하여 서브루틴 호출에…
ARM 아키텍처의 명령어는 실행 조건을 지정할 수 있는 Condition Field를 가지고 있다. 이는 명령어가 실행되기 전에 특정 조건을 검사하여 실행 여부를 결정할 수 있게 해준다. 이 글에서는 ARM Instruction Set에서…
ARM 아키텍처는 다양한 명령어를 제공하여 다양한 응용 분야에서 사용된다. 이 글에서는 주요 ARM 명령어를 요약해 본다. ARM Instruction Format Arm Instruction set 포맷은 아래와 같다. ARM Instruction Summary Branch 명령어…
GDB(GNU Debugger)는 프로그램을 디버깅하고 분석하는데 사용되는 강력한 도구이다. 이 글에서는 GDB의 기본적인 사용법에 대해 알아본다. GDB 설치 GDB를 사용하기 위해선 먼저 설치해야 합니다. 다음은 Ubuntu 기반 시스템에서 GDB를 설치하는 명령어이다.…
objdump는 리눅스 환경에서 사용되는 강력한 바이너리 분석 도구로, 컴파일된 프로그램의 바이너리 코드를 분석하고 디버깅하는 데 사용된다. 이 글에서는 objdump 유틸리티에 대해 알아본다. objdump 기본 사용법 objdump 주요 사용 옵션은 다음과…