월드버텍 블로그

내일을 향한 준비~~

어셈블리 명령어 예제

under Uncategorized

대부분의 다른 컴퓨터 언어와 마찬가지로 어셈블리 언어를 사용하면 어셈블리 중에 무시되는 주석을 프로그램 소스 코드에 추가할 수 있습니다. 이진 기계 명령 의 의미와 목적을 결정하기 어려울 수 있으므로 현명한 주석처리는 어셈블리 언어 프로그램에서 필수적입니다. 컴파일러 또는 디스어셈블러에서 생성되는 “원시” 어셈블리 언어는 변경해야 할 때 읽기가 매우 어렵습니다. 예제 jmp 시작 — 시작이라고 표시된 명령으로 이동합니다. ARM 레지스터 파일에 대한 이전 게시물에서 픽업할 것입니다. 다음 지침은 SSE 레지스터에서만 사용할 수 있습니다. 이렇게 하면 서브루틴 호출 직후에 레이블이 지정된 현장으로 프로그램이 반환됩니다. 위의 LR 및 PC 사용을 확인하십시오. ARM 어셈블러는 이를 각각 R14 및 R15로 인식합니다. 이렇게 하면 프로그래머가 수행 중인 작업에 대해 편리하게 미리 알림을 제공합니다. 이제 어셈블리 프로그래밍에서 한 가지 원리에 대해 이야기하기에 좋은 시기입니다: 모든 바람직한 작업이 하나의 명령에서 직접 적으로 표현되는 것은 아닙니다. 대부분의 사람들이 사용하는 일반적인 프로그래밍 언어에서는 많은 구문이 구성 가능하고 다양한 상황에 적응할 수 있으며 산술 연산을 중첩할 수 있습니다. 그러나 어셈블리 언어에서는 명령 집합에서 허용하는 내용만 작성할 수 있습니다.

예제를 설명하려면 예제를 따르려면 ARM 기반 랩 환경이 필요합니다. ARM 장치 (라즈베리 파이 처럼), 이 자습서를 따라 QEMU와 라즈베리 파이 배포판을 사용 하 여 가상 머신에서 자신의 실험실 환경을 설정할 수 있습니다. GDB의 기본 디버깅에 익숙하지 않은 경우 이 자습서의 기본 을 얻을 수 있습니다. 이 자습서에서는 ARM 32비트에 포커스가 있으며 예제는 ARMv6에서 컴파일됩니다. 우리는 레지스터의 몇 가지를 가지고 순차적으로 지침의 목록을 다음과 간단한 기계로 처리하여 x86 CPU의 논의를 시작했다. 이러한 레지스터에서 수행할 수 있는 기본 산술 연산을 다루었습니다. 그런 다음 코드, 비교 및 조건부 점프의 다른 장소로 이동하는 방법을 배웠습니다. 다음으로 우리는 거대한 주소 지정 가능한 데이터 저장소로 RAM의 개념을 방문, 어떻게 x86 주소 모드를 사용하여 간결하게 주소를 계산할 수 있습니다. 마지막으로 우리는 스택에서 간략하게 보았고, 규칙, 고급 명령, 가상 메모리 주소 번역 및 x86-64 모드의 차이점을 호출했습니다. MOV와 같은 일부 어셈블리 언어(이 언어 포함)에서는 즉각적인 값인지, 레지스터의 값인지 또는 값으로 가리키는 메모리 위치인지 여부에 관계없이 데이터를 로드, 복사 및 이동하기 위한 관련 지침 패밀리에 사용할 수 있습니다. 또는 즉각적인(a/k/a direct) 주소로 등록할 수 있습니다. 다른 어셈블러는 “등록할 메모리 이동”, “메모리로 레지스터 이동”을 위한 ST, “등록을 위해 레지스터이동”을 위한 LR, “즉시 피연산자를 메모리로 이동”하는 MVI 등의 별도의 opcode 기억기를 사용할 수 있습니다.

어셈블리 언어(또는 어셈블러 언어)[1] 종종 약어 asm은 프로그램의 명령과 아키텍처의 컴퓨터 코드 지침 사이에 매우 강력한 대응이 있는 모든 하위 수준의 프로그래밍 언어입니다. [2] 감소된 명령 세트에는 장점과 단점이 있습니다. 장점 중 하나는 명령을 더 빠르게 실행할 수 있어 더 빠른 속도를 허용할 수 있다는 것입니다(RISC 시스템은 명령당 클럭 주기를 줄여 실행 시간을 단축할 수 있습니다). 단점은 적은 지침은 사용할 수있는 제한된 명령과 소프트웨어의 효율적인 쓰기에 더 중점을 의미한다는 것입니다. 또한 중요한 것은 ARM에는 두 가지 모드, 즉 ARM 모드와 엄지 손가락 모드가 있다는 것입니다.

Comments are closed.

Subscribe to 월드버텍 블로그