워드 (컴퓨팅)

위키백과, 우리 모두의 백과사전.

워드(word)는 하나의 기계어 명령어나 연산을 통해 저장된 장치로부터 레지스터에 옮겨 놓을 수 있는 데이터 단위이다. 메모리에서 레지스터로 데이터를 옮기거나 ALU을 통해 데이터를 조작하거나 할 때, 하나의 명령어로 실행될 수 있는 데이터 처리 단위이다. 흔히 사용하는 32비트 CPU(ARM 등)라면 워드는 32비트가 된다.[1]

CPU을 개발할 때는 우선 처리단위부터 결정해야 레지스터, ALU 등의 하드웨어 설계가 가능하므로 중요한 요소이다.

워드 사례[편집]

인텔 80386[편집]

인텔 80386 컴파일러에서 제공되는 17개 데이터형 중에 워드는 다음과 같다.[2]

  • Integer word - signed 16비트 데이터. -32,768 ~ 32,767.
  • Unsigned Integer Word - unsigned 16비트 데이터. 0 ~ 65,535.
  • Signed quad word - signed 64비트 또는 4워드 데이터.
  • Unsigned Quad Word - unsigned 64비트 데이터.

ARM[편집]

ARM(ARM7, ARM9, ARM11)은 32비트 RISC CPU이다. 따라서 다음과 같은 데이터 형을 갖는다:[1]

  • word : 32비트
  • halfword : 16비트
  • byte : 8비트.

인텔의 CPU와 마이크로소프트 개발도구에서의 WORD 의미[편집]

인텔의 8085 8비트 마이크로프로세서에서 기본 처리 단위가 한 바이트이지만, 8086은 16비트 프로세서이므로 '워드'는 16비트가 된다. 이때 'word'가 사용되었다. 이 16비트는 마이크로소프트 사에서 소프트웨어 개발도구(비주얼스튜디오)와 결합하면서 WORD(소프트웨어에서는 주로 대문자로 표시)는 16비트를 의미한다. i386에서 데이터형은 byte, word, doubleword로 구분하였다.[3] i386의 32비트 CPU는 한 워드가 32비트 이어야 함에도 소프트웨어(어셈블리 표현, MFC 등의 정의 비트수) 상에서 WORD는 여전히 16비트를 의미한다.[4] 소프트웨어 상에서 32비트는 DWORD로 표현한다.[5] 따라서 소프트웨어를 작성할 때와 CPU의 워드 처리단위는 혼돈의 소지가 있다.

비주얼스튜디오에서 x86 어셈블리 예:

mov ax, WORD PTR [00400010H]

00400010H 번지의 내용을 AX 레지스터로 옮기는 명령어이며, 이때 옮기는 단위 16비트이다.

mov eax, DWORD PTR [00400010H]

00400010H 번지의 내용을 EAX 레지스터로 옮기는 명령어이며, 이때 옮기는 단위 32비트이다.

각주[편집]

  1. ARM11 MPCore™ Processor Technical Reference Manual, Revision: r2p0, 2.4 Data Types, 페이지2-5
  2. A K Ray, K M Bhurchandi, “Advanced microprocessors and peripherals”
  3. INTEL 80386 PROGRAMMER'S REFERENCE MANUAL 1986, 2.2 Data Types, Page 24 of 421
  4. MSDN - WORD
  5. MSDN - DWORD