Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

Appendix B. Common x86 Instructions

12. Appendix B. Common x86 Instructions

Instructions은 테이블 형태로 설명을 하도록 할 것이다. 이 테이블은 아래와 같은 내용들을 담고 있다.

  • Instruction 코드

  • 사용되는 operands

  • 사용되는 flags

  • instruction에 대한 자세한 설명

12.1. Data Transfer Instructions

표 1. Data Transfer Instructions

InstructionOperandsAffected Flags
movlI/R/M, I/R/MO/S/Z/A/C
word 단위의 데이터를 다른 위치로 옮기기 위해서 사용한다. movl %eax %ebx 는 %eax의 데이터를 %ebx로 복사하라는 의미다.
movbI/R/M, I/R/MO/S/Z/A/C
byte단위인걸 제외하고는 movl과 동일한 일을 한다.
lealM, I/R/MO/S/Z/AC
메모리의 위치를 계산해서, 해당 주소를 읽어온다. 예를들어 leal 5(%ebp, %ecx, 1)일경우 5+%ebp+1*%ecx 로 계산된 주소의 값이 %eax에 저장된다.
poplR/MO/S/Z/A/C
스택의 가징위에 있는 위치값을 가져온다. 이것은 movl (%esp), R/M 후 addl $4 한 것과 같은 결과를 보여준다.
pushlI/R/MO/S/Z/A/C
스택에 값을 밀어 넣는다. movl %eax, (%esp)후 subl $4, %esp한 것과 같은 결과를 보여준다.
xchglR/M, R/MO/S/Z/A/C
값을 서로 바꾼다.

12.2. Integer Instructions

부호있는 정수형과 부호없는 정수형의 계산을 위한 명령을 소개한다.

표 2. Data Transfer Instructions

InstructionOperandsAffected Flags
adclI/R/M, R/MO/S/Z/A/P/C
 
addlI/R/M, R/MO/S/Z/A/P/C
첫번째 오퍼랜드와 두번째 오퍼랜드를 더한다. 결과는 두번째 오퍼랜드에 저장된다. 만약 더한 결과가 저장될 레지스터의 공간보다 큰다면, overflow가 발생하고 bits는 참이 된다. 이 명령은 부호형과 부호없는 정수형 모두에 사용된다.