Busan IT/Assembly2015. 8. 17. 17:37

==================================Outline====================================

자료형과 컴퓨터 시스템

----------------------------------------------------------------------------

 

ARM이나 ATmegaI/O Mapped Memory 방식을 사용하여 C의 포인터로 메모리를 사용할 수 있었으나 I/O Mapped I/O방식은 포인터로 조작할 수 없음으로 어셈블러를 사용해야 한다.

 

데이터 레지스터 혹은 일반 레지스터는 EAX, EBX, ECX, EDX이다.

 

EAX(Extended Accumulator Register) 속도가 빠르기 때문에 계산에 사용되면 이를 누산기(accumulator)라고 부른다. EAX4byte이며 하위 2byteAX라고 부른다.

AX에서 가장 하위 비트를 AL 한 단계 상위 비트를 AH로 부른다.

 

유니온 구조체로 표현하자면,

 

union Reg

{

int EAX;

short AX;

char AH;

char AL;

}

 

EBX(Extended Base Register), ECX(Extended Count Register), EDX(Extended Data Register)

 

과거 2byte체제에서는 확장되지 않은 레지스터들이(AX, BX, CX, DX) 존재했다.

386체제부터는 4byte로 확장되었다.

 

추가적인 4개의 레지스터들이 존재한다.

 

ESIEDI는 인덱스 레지스터이다. 인덱스를 사용하여 데이터를 복사하는데 사용한다.

ESP는 스택 포인터이고 EBP는 베이스 포인터이다.

 

6개의 구역을 나누는 레지스터도 존재한다: CS, DS, ES, FS, GS, SS

 

4byte 명령어 포인터 EIP(Extended Instruction Pointer)

 

EIP = PC(Program Counter) -> 명령어가 수행되는 Code영역의 주소를 가지고 있다.

 

EFLAGS는 상태레지스터로 사용된다.

 

//위에 표는 다음에 사용될테니 잘 보아두자.

mnemonic은 특정한 명령어, 지시어 혹은 명령이다. 한 개 이상의 연산이 있을 때 연산은 쉼표(,)로 구분된다.

 

ex) add eax, 158 -> 05 00 00 00 9E






 

 

반응형
Posted by newind2000