산술 연산 명령어
> IA32에서 지원하는 산술연산 명령어의 종류는 아래와 같다.
> [ ADD / SUB / MUL / DIV / IMUL / IDIV ]
ADD ( 덧셈, + )
> add esp, 4
> Esp=esp+4
> 변수 공간을 해제할때 사용
SUB ( 뺄셈, - )
> sub esp, 8
> Esp=esp-8
주로 변수 공간을 확보할 때 사용이 된다.
MUL ( 곱셈, * )
> eax와 연관
> Ex) mul ecx : eax*ecx
> 위 예시의 연산 결과값은 edx:eax에 저장 (상위 비트 : edx, 하위 비트 : eax)
IMUL (Interger Multiply, 부호 있는 정수의 곱셈, sign)
> MUL과 IMUL 두 명령어 곱셈을 수행한다. ( Unsign과 Sign형의 연산 차이 )
> AX, DX:AX, EDX:EAX에 저장
> 오퍼랜드의 크기에 따라 저장할 레지스터의 크기가 결정.
DIV ( 나눗셈, / )
> 몫은 EAX, 나머지는 EDX에 저장.
> EDX 영역을 확장해서 사용.
> CBW, CWD, CDQ 등
IDIV ( 부호 있는 나눗셈, / )
> 몫은 EAX, 나머지는 EDX에 저장.
> EDX 영역을 확장해서 사용.
> CBW, CWD, CDQ 등
+ CBW, CWD, CDQ 명령어?
> 부호 확장 명령어.
> CBW : Convert Byte to Word, 바이트를 워드로 확장.
> CWD : Convert Word to Dword, 워드를 Dword(2워드)로 확장.
> CDQ : Convert Dword to Qword, Dword를 Qword(4워드)로 확장.
+ Increase, Decrease?
> INC : Increase, 피연산자의 데이터에 +1 수행. (단일 오퍼랜드에 +1 수행)
> DEC : Decrease, 피연산자의 데이터에 -1 수행. (단일 오퍼랜드에 -1 수행)
비트 연산 명령어 (비트 연산자)
> AND, OR, XOR
> AND : 두 오퍼랜드의 각 비트의 AND 연산 수행
> OR : 두 오퍼랜드의 각 비트의 OR 연산 수행
> XOR : 두 오퍼랜드의 각 비트의 XOR 연산 수행
'[정보 보안] 리버싱' 카테고리의 다른 글
[Reversing] 기초 이론_Assembly(어셈블리)_3 (0) | 2022.08.22 |
---|---|
[Reversing] 기초 이론_Assembly(어셈블리) (0) | 2022.08.20 |
[Reversing] 기초 이론_CPU와 레지스터_3 (0) | 2022.08.19 |
[Reversing] 기초 이론_CPU와 레지스터_2 (0) | 2022.08.18 |
[Reversing] 기초 이론_CPU와 레지스터 (0) | 2022.08.10 |