워드 (컴퓨팅)
워드(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비트이다.
같이 보기
편집각주
편집- ↑ 가 나 ARM11 MPCore™ Processor Technical Reference Manual, Revision: r2p0, 2.4 Data Types, 페이지2-5
- ↑ A K Ray, K M Bhurchandi, “Advanced microprocessors and peripherals”
- ↑ INTEL 80386 PROGRAMMER'S REFERENCE MANUAL 1986, 2.2 Data Types, Page 24 of 421
- ↑ MSDN - WORD
- ↑ MSDN - DWORD