ARM Instruction Set: Single Data Transfer (LDR, STR)

ARM 아키텍처에서는 메모리에서 데이터를 로드하거나 메모리에 데이터를 저장하는 데 사용되는 LDR (Load Register)와 STR (Store Register) 명령어가 있다. 이 글에서는 LDR 과 STR 명령어에 대해 알아본다. Single data transfer instructions…

Continue ReadingARM Instruction Set: Single Data Transfer (LDR, STR)

ARM Instruction Set: Multiply and Multiply-Accumulate (MUL, MLA)

ARM 아키텍처에서는 곱셈과 곱셈 누적 연산을 위한 명령어인 MUL (Multiply)과 MLA (Multiply-Accumulate)를 제공한다. 이 글에서는 MUL, MLA 명령어에 대해 알아본다. Multiply instructions 곱셈과 곱셈-누산 명령은 8비트 Booth 알고리즘을 사용하여 정수…

Continue ReadingARM Instruction Set: Multiply and Multiply-Accumulate (MUL, MLA)

ARM Instruction Set: Branch Instructions (B, BL)

ARM 아키텍처는 branch(분기) 명령어를 통해 프로그램 흐름을 제어할 수 있다. B (Branch)와 BL (Branch with Link)는 주로 조건 없이 레이블로의 분기를 담당하며, BL은 현재 주소를 링크 레지스터에 저장하여 서브루틴 호출에…

Continue ReadingARM Instruction Set: Branch Instructions (B, BL)

GDB 사용법

GDB(GNU Debugger)는 프로그램을 디버깅하고 분석하는데 사용되는 강력한 도구이다. 이 글에서는 GDB의 기본적인 사용법에 대해 알아본다. GDB 설치 GDB를 사용하기 위해선 먼저 설치해야 합니다. 다음은 Ubuntu 기반 시스템에서 GDB를 설치하는 명령어이다.…

Continue ReadingGDB 사용법

objdump 바이너리 유틸리티

objdump는 리눅스 환경에서 사용되는 강력한 바이너리 분석 도구로, 컴파일된 프로그램의 바이너리 코드를 분석하고 디버깅하는 데 사용된다. 이 글에서는 objdump 유틸리티에 대해 알아본다. objdump 기본 사용법 objdump 주요 사용 옵션은 다음과…

Continue Readingobjdump 바이너리 유틸리티