대문 / 프로그래밍 / Intel® Architectures

Intel® Architectures

1.1 시작하기전에

Intel®사의 Architecture에 대해서 개인적으로 조사한것을 정리한것입니다. 즉, 이 문서는 실제 Intel® Architectures을 완벽하게 설명하는 문서가 아님을 의미하며 실제 Architecture와 상이하게 설명될수도 있음을 밝힙니다. 오로지 개인적인 정리차원으로 작성된 문서임을 명확히 밝히는 바이며 Intel® Architectures에 관한 정확한 자료를 찾는 분이계시다면 "Intel® 64 and IA-32 Architectures Software Developer’s Manual" ([http]Intel®사의 홈페이지[]에서 신청하면 받아볼수 있습니다.) 문서를 보시길 권합니다.

여기 작성된 Intel® Architectures에 관한 내용은 무단 복제 및 배포를 절대 허용하지 않습니다.

1.1.1 Bit와 Byte열의 순서

Intel 64와 IA-32 processor들은 "Little endian"을 사용합니다. 이것은 하나의 word구성에서 낮은 bit번호, 낮은 byte offset이 먼저 위치한다는 것을 의미합니다.

1.1.2 예약된 bits와 소프트웨어의 호환성

많은 register와 memory의 특정부분은 예약된 영역으로 정의되는데 이러한 예약된 영역은 그 용도가 명확하게 정의되지 않은 상태로 미래에 어떻게 정의될것인지 예측할수 없습니다. 때문에 소프트웨어는 다음과 같은 지침에 따라서 이를 처리해야 합니다.
  • 모든 예약된 bit의 값은 제외하고 test하도록 하여야 합니다.
  • 모든 예약된 bit에 저장되는 값의 상태에 의존하는 경우를 만들지 말아야 합니다.
  • 모든 예약된 bit에 기록된 값이 유지될것이라고 가정하여서는 안됩니다.
  • 어떤 값을 register로 load할 경우 예약된 bit도 항상 함께 load해야 합니다.

    예약된 bit의 값에 의존하는 경우는 되도록이면 피하는것이 좋습니다. 이는 미래의 Processor에서 호환성에 문제를 발생할수 있는 중요한 문제가 될수 있음을 유의해야 합니다.

  • 1.1.3 피연산자 명령어(Instruction Operands)

    이 문서에서는 알아보기 쉽게 하기 위해서 IA-32 Assembly 언어로 표시하게 될겁니다.
    label: mnemonic argument1, argument2, argument3
    
  • label은 콜론(:)이 뒤에 따릅니다.
  • mnemonic는 opcodes명령을 외우기 쉬운 예약어로 표현합니다.
  • 피연산자 argument1, argument2, argument3는 opcodes에 따라서 아예 없을수도 있고 1개, 2개, 3개의 피연산자가 사용될수도 있습니다.
  • 피연산자에는 register 및 data를 식별할수 있도록 고유식별자로 표현합니다.

    두 개의 피연산자가 산술 또는 논리명령에서 사용되는 경우 오른쪽 피연산자는 원천지(source), 왼쪽 피연산자는 목적지(destination)의 의미로 사용됩니다.

    예를 들자면
    LOADREG: MOV EAX, SUBTOTAL
    
    여기서 LOADREGlabel이며 MOV는 opcodes에 대응하는 mnemonic입니다. 그리고 EAX목적지 피연산자이고 SUBTOTAL원천지 피연산자임을 나타냅니다. (어떤 Assembly언어는 원천지가 왼쪽, 목적지가 오른쪽에 표시되어 반대로 표현되는 언어도 있습니다.)

  • 1.1.4 2진수, 10진수, 16진수 표현

    • 2진수는 '0'과 '1'을 사용하여 값을 표시하며 혼란의 소지가 있는 경우 'B'를 붙입니다. (예: 1010B)
    • 10진수는 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'를 사용하여 값을 표시하며 혼란의 소지가 있는 경우 뒤에 'D'를 붙입니다. (예: 1234D)
    • 16진수는 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'를 사용하여 값을 표시하며 뒤에 항상 'H'를 붙입니다. (예: 0F82EH)

    1.1.5 세그먼트(Segment)화된 주소지정

    Processor는 byte 단위의 주소지정을 사용할수 있으며 이것은 byte단위의 주소접근이 가능하다는것과 1 byte 또는 여러 bytes단위로의 memory를 사용할수 있다는 것을 의미합니다.

    memory의 특정구간에 주소가 지정되어 있는데 이러한 구간을 주소공간이라고 합니다.

    Processor는 세그먼트(Segment)화된 주소지정을 지원하며 Program은 여러 독립적인 주소공간의 세그먼트(Segment)에 놓일수 있습니다.


    1.2 참고문헌

    • Intel® 64 and IA-32 Architectures Software Developer’s Manual
      • Intel® 64 and IA-32 Architectures Software Developer’s Manual - Volume 1 Basic Architecture
      • Intel® 64 and IA-32 Architectures Software Developer’s Manual - Volume 2A Instruction Set Reference, A-M
      • Intel® 64 and IA-32 Architectures Software Developer’s Manual - Volume 2B Instruction Set Reference, N-Z
      • Intel® 64 and IA-32 Architectures Software Developer’s Manual - Volume 3A System Programming Guide, Part 1
      • Intel® 64 and IA-32 Architectures Software Developer’s Manual - Volume 3B System Programming Guide, Part 2
    • Intel® 64 and IA-32 Architectures Optimization Reference Manual
    • Intel® 64 Architecture x2APIC Specification

    /*
    End of page
    (RemoteIP=38.107.179.242:43734)
    Copyright © HWPORT.COM
    All Rights Reserved.
    */