prefix byte 란?

어셈블리(MASM) 2008. 11. 26. 16:28

prefix byte 란?

mov  ax , 0

mov   eax , 0

은 둘다 같은 opcode(기계어 코드)인 B8을 가리키지만 ax 레지스터는 16비트, eax레지스터는 32비트 레지스터이다 따라서 뒤에 오는 어퍼렌드는 크기가 달라서   mov ax,0은 B8 00 00  처럼 기계어로 대치되며 mov eax,0은 B8 00 00 00 00 처럼 기계어로 대치된다. 이와 같이 오퍼렌드의 크기는다른데 opcode가 같다면 이것을 구분하기 위해 prefix byte를 사용하게 되는데 66 B8 00 00 처럼 16비트 오퍼렌드를 가지는 opcode 앞에 0x66 을 붙여 뒤에오는 오퍼렌드가 16비트 임을 알린다

사용자 삽입 이미지



그림에서 보는것과 같이 mov ax,0 과 mov eax,0을 코드로 작성하고  디버깅을 한후 값을 확인 해보면

메모리에 prefix byte 인 0x66이 들어 있는 것을 확인 할수 있다.




Posted by 응이

Dream come true.
응이

달력

태그목록