Skip to content

Commit

Permalink
#1 3장 내용 정리/압축
Browse files Browse the repository at this point in the history
  • Loading branch information
HIPERCUBE committed Mar 10, 2016
1 parent 578ff8e commit 73a378b
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions book/Ch3_64비트 프로세서의 이모저모.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ x86-64 프로세서는 위와 같이 총 다섯 가지 운영 모드 지원하
리얼 모드는 디바이스 드라이버를 제작하지 않아도 되는 장점이 있고, 하는 작업도 OS 이미지를 디스크에서 메모리로 복사하여 보호 모드로 변경하는 것 밖에 없지만, 대부분 작업을 어셈블리어로 처리해야 한다는 단점이 있다.

### 보호 모드
보호 모드는 IA-32e 모드로 전환하려면 공식적으로 거쳐야 하는 모드로, 32비트 윈도우나 리눅스 OS가 동작하는 기본 모드입니다.
보호 모드는 IA-32e 모드로 전환하려면 공식적으로 거쳐야 하는 모드로, 32비트 윈도우나 리눅스 OS가 동작하는 기본 모드이다.
최대 4GB의 주소 공간을 제공하며 OS의 필수 기능으로 자리 잡은 보호, 멀티태스킹, 세그먼테이션, 페이징 등의 기능을 하드웨어적으로 지원한다.
여러 기능을 제공하는 만큼 복잡하고, 레지스터와 자료구조가 다양하다.

Expand Down Expand Up @@ -99,10 +99,10 @@ x86-64 프로세서는 x86 프로세서가 가지는 범용 레지스터 외에
곱셈 명령은 오퍼랜드가 하나밖에 없는데 이것이 가능한 이유는 곱셈 명령이 다른 하나의 오퍼랜드로 AX레지스터를 사요하기 때문이다.
곱셈 명령은 AX와 오퍼랜드를 곱한 후, 그 결과를 DX:AX, 혹은 AX에 저장하도록 설계되어있다.

64비트 범용 레지스터는 하위 32비트, 16비트, 8비트의 크기로 구분하여 접근할 수 있고, 레지스터에 접두사(Prefix)접미사(Postfix)를 붙여 접근하는 크기를 표시한다.
대체로 64비트 레지스터에는 RAX, RBX처럼 R 접두사가 붙고, 32비트 레지스터에는 EAX, EBX, E8D, R9D처럼 E접두사나 D접미사가 붙는다.
16비트 레지스터는 AX, BX, R8W, R9W처럼 접두사가 붙지 않거나 W접미사가 붙는다.
16비트 이하의 레지스터는 상위 8비트와 하위 8비트로 다시 구분되는데 상위 8비트는 AH, BH처럼 끝자리가 H로 변경되고, 하위 8비트는 AL, BL, SIL, DIL, R8L, R9L처럼 끝자리가 L로 변경되거나 접미사 L이 붙는다.
64비트 범용 레지스터는 하위 32비트, 16비트, 8비트의 크기로 구분하여 접근할 수 있고, 레지스터에 **접두사(Prefix)****접미사(Postfix)**를 붙여 접근하는 크기를 표시한다.
대체로 64비트 레지스터에는 RAX, RBX처럼 **R 접두사** 붙고, 32비트 레지스터에는 EAX, EBX, E8D, R9D처럼 **E접두사****D접미사** 붙는다.
16비트 레지스터는 AX, BX, R8W, R9W처럼 접두사가 붙지 않거나 **W접미사** 붙는다.
16비트 이하의 레지스터는 상위 8비트와 하위 8비트로 다시 구분되는데 상위 8비트는 AH, BH처럼 끝자리가 H로 변경되고, 하위 8비트는 AL, BL, SIL, DIL, R8L, R9L처럼 끝자리가 L로 변경되거나 **접미사 L** 붙는다.

리얼 모드에서 16비트 크기 이하의 레지스터만 접근 가능한 것으로 되어 있지만, 오퍼랜드 크기 접두사(Operand-Size Prefix, 0x66)를 사용하거나 어드레스 크기 접두사(Address-Size Prefix, 0x67)를 사용하면 32비트 레지스터도 접근할 수 있지만, 이런 경우는 보호 모드로 전환하는 것처럼 특수한 상황이므로 리얼 모드에서 16비트 이하의 크기를 가지는 레지스터에만 접근한다고 생각해도 된다.
운영 모드에 따라 접두사를 결합하는 방법에는 일정한 규칙이 있으며 사용한 접두사에 따라 명령어(Instruction)가 처리하는 오퍼랜드나 어드레스의 크기에 따라 달라진다. 아래 표는 운영 모드와 접두사에 따라 오퍼랜드와 어드레스의 크기가 어떻게 변화하는지 나타낸 것이다.
Expand Down

0 comments on commit 73a378b

Please sign in to comment.