EM64T Vol1. Instruction
LFS : 메모리 피연산자의 내용이 FS:reg 위치에 적재된다
- lfs reg16/32/64, mem
LGDT/LIDT : GDT/IDT의 주소를 각각 GDTR/IDTR에 적재
LGS : 메모리 피연산자의 내용이 GS:reg 위치에 적재된다
- lgs reg16/32/64, mem
LLDT : LDT의 주소를 LDTR에 적재한다
- lldt reg/mem16
EM64T Vol2. Instruction
MOVUPS : xmm2/mem128 과 xmm1간의 packed된 단정밀도 부동소수점 이동
- movups xmm1, xmm2/m128
- movups xmm2/m128, xmm1
MOVZX : byte/word/dword를 0으로 확장하여 word/dword/qword로 이동
MUL : 부호없는 수의 곱셈 연산
- ax = al * r/m8
- dx:ax = ax * r/m16
- edx:eax = eax * r/m32
- rdx:rax = rax * r/m64
MULPD : packed된 배정밀도 부동소수점의 곱셉, xmm1과 xmm2/mem128의 곱을 xmm1에 저장
- mulpd xmm1, xmm2/m128
MULPS : packed된 단정밀도 부동소수점의 곱셈, xmm1과 xmm2/mem128의 곱을 xmm1에 저장
- mulps xmm1, xmm2/m128
MULSD : xmm2/mem64의 하위 배정밀도 부동소수와 xmm1의 하위 배정밀도 부동소수의 곱을 xmm1에 저장
- mulsd xmm1, xmm2/m64
MULSS : xmm2/mem32의 하위 단정밀도 부동소수와 xmm1의 하위 단정밀도 부동소수의 곱을 xmm1에 저장
- mulss xmm1, xmm2/m32
MWAIT : 하이퍼스레딩에 의해 2개의 스레드가 동작 중,1개의 스레드가 처리 대기상태가 되었을때
처리 대기 상태의 스레드를 MWAIT 명령으로 완전히 정지시킨다(스레드 동기화 명령)
NEG : 오퍼랜드를 2의 보수로 취함
- neg r/m8(m16/m32/m64)
NOP : 아무런 연산도 하지 않음
NOT : 오퍼랜드의 논리부정
- not r/m8(m16/m32/m64)
OR : 오퍼랜드의 논리합
- or al/ax/eax/rax, imm8/16/32/64
- or r/m8(m16/m32/m64), imm8/16/32
- or r/m8(m16/m32/m64), r8/r16/r32/r64
- or r8/16/32/64, r/m8(m16/m32/m64)
ORPD : 배정밀도 부동소수의 논리합
- orpd xmm1, xmm2/m128
ORRS : 단정밀도 부동소수의 논리합
- orrs xmm1, xmm2/m128
OUT : ACC의 값을 I/O port[dx/imm]에 저장
- out imm8, al/ax/eax/rax
- out dx, al/ax/eax/rax
OUTS/OUTSB/OUTSW/OUTSD : 문자열을 port[dx]로 전송
- outs dx, m8/16/32
- outsb(byte)
- outsw(word)
- outsd(dword)
PACKSSWB : signed word값을 signed byte로 변환(signed saturate)
PACKSSDW : signed dword값을 signed word로 변환(signed saturate)
PACKUSWB : unsigned word값을 unsigned byte로 변환(unsigned saturate)
PADDB : unsigned byte값을 가진 오퍼랜드끼리 더한다(warp around)
PADDW : unsigned word값을 가진 오퍼랜드끼리 더한다(warp around)
PADDD : unsigned dword값을 가진 오퍼랜드끼리 더한다(warp around)
PADDQ : unsigned qword값을 가진 오퍼랜드끼리 더한다(warp around)
PADDSB : signed byte값을 가진 오퍼랜드끼리 더한다(signed saturate)
PADDSW : signed word값을 가진 오퍼랜드끼리 더한다(signed saturate)
PADDUSB : unsigned byte값을 가진 오퍼랜드끼리 더한다(unsigned saturate)
PADDUSW : unsigned word값을 가진 오퍼랜드끼리 더한다(unsigned saturate)
※ warp around : carry나 borrow 무시, 일반적인 연산
unsigned saturate : 최상위 값과 최하위 값의 영역을 가짐(부호없음)
signed saturate : 최상위 값과 최하위 값의 영역을 가짐(부호있음)
LFS : 메모리 피연산자의 내용이 FS:reg 위치에 적재된다
- lfs reg16/32/64, mem
LGDT/LIDT : GDT/IDT의 주소를 각각 GDTR/IDTR에 적재
LGS : 메모리 피연산자의 내용이 GS:reg 위치에 적재된다
- lgs reg16/32/64, mem
LLDT : LDT의 주소를 LDTR에 적재한다
- lldt reg/mem16
EM64T Vol2. Instruction
MOVUPS : xmm2/mem128 과 xmm1간의 packed된 단정밀도 부동소수점 이동
- movups xmm1, xmm2/m128
- movups xmm2/m128, xmm1
MOVZX : byte/word/dword를 0으로 확장하여 word/dword/qword로 이동
MUL : 부호없는 수의 곱셈 연산
- ax = al * r/m8
- dx:ax = ax * r/m16
- edx:eax = eax * r/m32
- rdx:rax = rax * r/m64
MULPD : packed된 배정밀도 부동소수점의 곱셉, xmm1과 xmm2/mem128의 곱을 xmm1에 저장
- mulpd xmm1, xmm2/m128
MULPS : packed된 단정밀도 부동소수점의 곱셈, xmm1과 xmm2/mem128의 곱을 xmm1에 저장
- mulps xmm1, xmm2/m128
MULSD : xmm2/mem64의 하위 배정밀도 부동소수와 xmm1의 하위 배정밀도 부동소수의 곱을 xmm1에 저장
- mulsd xmm1, xmm2/m64
MULSS : xmm2/mem32의 하위 단정밀도 부동소수와 xmm1의 하위 단정밀도 부동소수의 곱을 xmm1에 저장
- mulss xmm1, xmm2/m32
MWAIT : 하이퍼스레딩에 의해 2개의 스레드가 동작 중,1개의 스레드가 처리 대기상태가 되었을때
처리 대기 상태의 스레드를 MWAIT 명령으로 완전히 정지시킨다(스레드 동기화 명령)
NEG : 오퍼랜드를 2의 보수로 취함
- neg r/m8(m16/m32/m64)
NOP : 아무런 연산도 하지 않음
NOT : 오퍼랜드의 논리부정
- not r/m8(m16/m32/m64)
OR : 오퍼랜드의 논리합
- or al/ax/eax/rax, imm8/16/32/64
- or r/m8(m16/m32/m64), imm8/16/32
- or r/m8(m16/m32/m64), r8/r16/r32/r64
- or r8/16/32/64, r/m8(m16/m32/m64)
ORPD : 배정밀도 부동소수의 논리합
- orpd xmm1, xmm2/m128
ORRS : 단정밀도 부동소수의 논리합
- orrs xmm1, xmm2/m128
OUT : ACC의 값을 I/O port[dx/imm]에 저장
- out imm8, al/ax/eax/rax
- out dx, al/ax/eax/rax
OUTS/OUTSB/OUTSW/OUTSD : 문자열을 port[dx]로 전송
- outs dx, m8/16/32
- outsb(byte)
- outsw(word)
- outsd(dword)
PACKSSWB : signed word값을 signed byte로 변환(signed saturate)
PACKSSDW : signed dword값을 signed word로 변환(signed saturate)
PACKUSWB : unsigned word값을 unsigned byte로 변환(unsigned saturate)
PADDB : unsigned byte값을 가진 오퍼랜드끼리 더한다(warp around)
PADDW : unsigned word값을 가진 오퍼랜드끼리 더한다(warp around)
PADDD : unsigned dword값을 가진 오퍼랜드끼리 더한다(warp around)
PADDQ : unsigned qword값을 가진 오퍼랜드끼리 더한다(warp around)
PADDSB : signed byte값을 가진 오퍼랜드끼리 더한다(signed saturate)
PADDSW : signed word값을 가진 오퍼랜드끼리 더한다(signed saturate)
PADDUSB : unsigned byte값을 가진 오퍼랜드끼리 더한다(unsigned saturate)
PADDUSW : unsigned word값을 가진 오퍼랜드끼리 더한다(unsigned saturate)
※ warp around : carry나 borrow 무시, 일반적인 연산
unsigned saturate : 최상위 값과 최하위 값의 영역을 가짐(부호없음)
signed saturate : 최상위 값과 최하위 값의 영역을 가짐(부호있음)
댓글 0
.