mirror of
https://github.com/netwide-assembler/nasm.git
synced 2025-03-19 18:00:23 +08:00
BR 1828866: fix handling of LAR/LSL
Fix handling of LAR/LSL with various sized operands
This commit is contained in:
parent
e8cdcdcc37
commit
4b3390eb47
12
insns.dat
12
insns.dat
@ -618,10 +618,16 @@ JRCXZ imm \1\xE3\50 X64
|
||||
LAHF void \1\x9F 8086
|
||||
LAR reg16,mem \320\2\x0F\x02\110 286,PROT,SW
|
||||
LAR reg16,reg16 \320\2\x0F\x02\110 286,PROT
|
||||
LAR reg16,reg32 \320\2\x0F\x02\110 386,PROT
|
||||
LAR reg16,reg64 \320\323\2\x0F\x02\110 X64,PROT,ND
|
||||
LAR reg32,mem \321\2\x0F\x02\110 386,PROT,SW
|
||||
LAR reg32,reg16 \321\2\x0F\x02\110 386,PROT
|
||||
LAR reg32,reg32 \321\2\x0F\x02\110 386,PROT
|
||||
LAR reg32,reg64 \321\323\2\x0F\x02\110 X64,PROT,ND
|
||||
LAR reg64,mem \324\2\x0F\x02\110 X64,PROT,SW
|
||||
LAR reg64,reg16 \324\2\x0F\x02\110 X64,PROT
|
||||
LAR reg64,reg32 \324\2\x0F\x02\110 X64,PROT
|
||||
LAR reg64,reg64 \324\2\x0F\x02\110 X64,PROT
|
||||
LDS reg16,mem \320\1\xC5\110 8086,NOLONG
|
||||
LDS reg32,mem \321\1\xC5\110 386,NOLONG
|
||||
LEA reg16,mem \320\1\x8D\110 8086
|
||||
@ -671,10 +677,16 @@ LOOPZ imm,reg_ecx \311\1\xE1\50 386
|
||||
LOOPZ imm,reg_rcx \313\1\xE1\50 X64
|
||||
LSL reg16,mem \320\2\x0F\x03\110 286,PROT,SW
|
||||
LSL reg16,reg16 \320\2\x0F\x03\110 286,PROT
|
||||
LSL reg16,reg32 \320\2\x0F\x03\110 386,PROT
|
||||
LSL reg16,reg64 \320\323\2\x0F\x03\110 X64,PROT,ND
|
||||
LSL reg32,mem \321\2\x0F\x03\110 386,PROT,SW
|
||||
LSL reg32,reg16 \321\2\x0F\x03\110 386,PROT
|
||||
LSL reg32,reg32 \321\2\x0F\x03\110 386,PROT
|
||||
LSL reg32,reg64 \321\323\2\x0F\x03\110 X64,PROT,ND
|
||||
LSL reg64,mem \324\2\x0F\x03\110 X64,PROT,SW
|
||||
LSL reg64,reg16 \324\2\x0F\x03\110 X64,PROT
|
||||
LSL reg64,reg32 \324\2\x0F\x03\110 X64,PROT
|
||||
LSL reg64,reg64 \324\2\x0F\x03\110 X64,PROT
|
||||
LSS reg16,mem \320\2\x0F\xB2\110 386
|
||||
LSS reg32,mem \321\2\x0F\xB2\110 386
|
||||
LTR mem \1\x0F\170\203 286,PROT,PRIV
|
||||
|
122
test/lar_lsl.asm
Normal file
122
test/lar_lsl.asm
Normal file
@ -0,0 +1,122 @@
|
||||
; LAR/LSL
|
||||
;---------
|
||||
|
||||
; 1x ; = invalid due to lack of REX
|
||||
; 3x ; = invalid due to Mw
|
||||
|
||||
%macro m 1
|
||||
|
||||
bits 16
|
||||
|
||||
%1 ax, ax
|
||||
%1 ax,eax
|
||||
; %1 ax,rax
|
||||
|
||||
%1 eax, ax
|
||||
%1 eax,eax
|
||||
; %1 eax,rax
|
||||
|
||||
; %1 rax, ax
|
||||
; %1 rax,eax
|
||||
; %1 rax,rax
|
||||
|
||||
%1 ax, [0]
|
||||
%1 ax, word [0]
|
||||
;;; %1 ax,dword [0]
|
||||
; %1 ax,qword [0]
|
||||
|
||||
%1 eax, [0]
|
||||
%1 eax, word [0]
|
||||
;;; %1 eax,dword [0]
|
||||
; %1 eax,qword [0]
|
||||
|
||||
; %1 rax, [0]
|
||||
; %1 rax, word [0]
|
||||
; %1 rax,dword [0]
|
||||
; %1 rax,qword [0]
|
||||
|
||||
bits 32
|
||||
|
||||
%1 ax, ax
|
||||
%1 ax,eax
|
||||
; %1 ax,rax
|
||||
|
||||
%1 eax, ax
|
||||
%1 eax,eax
|
||||
; %1 eax,rax
|
||||
|
||||
; %1 rax, ax
|
||||
; %1 rax,eax
|
||||
; %1 rax,rax
|
||||
|
||||
%1 ax, [0]
|
||||
%1 ax, word [0]
|
||||
;;; %1 ax,dword [0]
|
||||
; %1 ax,qword [0]
|
||||
|
||||
%1 eax, [0]
|
||||
%1 eax, word [0]
|
||||
;;; %1 eax,dword [0]
|
||||
; %1 eax,qword [0]
|
||||
|
||||
; %1 rax, [0]
|
||||
; %1 rax, word [0]
|
||||
; %1 rax,dword [0]
|
||||
; %1 rax,qword [0]
|
||||
|
||||
bits 64
|
||||
|
||||
%1 ax, ax
|
||||
%1 ax,eax
|
||||
%1 ax,rax ; $TODO: shouldn't emit REX.W $
|
||||
|
||||
%1 eax, ax
|
||||
%1 eax,eax
|
||||
%1 eax,rax ; $TODO: shouldn't emit REX.W $
|
||||
|
||||
%1 rax, ax
|
||||
%1 rax,eax
|
||||
%1 rax,rax
|
||||
|
||||
%1 ax, [0]
|
||||
%1 ax, word [0]
|
||||
;;; %1 ax,dword [0]
|
||||
;;; %1 ax,qword [0]
|
||||
|
||||
%1 eax, [0]
|
||||
%1 eax, word [0]
|
||||
;;; %1 eax,dword [0]
|
||||
;;; %1 eax,qword [0]
|
||||
|
||||
%1 rax, [0]
|
||||
%1 rax, word [0]
|
||||
;;; %1 rax,dword [0]
|
||||
;;; %1 rax,qword [0]
|
||||
|
||||
%endmacro
|
||||
|
||||
m lar
|
||||
|
||||
m lsl
|
||||
|
||||
bits 16
|
||||
lar ax,[ si]
|
||||
lar ax,[esi]
|
||||
bits 32
|
||||
lar ax,[ si]
|
||||
lar ax,[esi]
|
||||
bits 64
|
||||
lar ax,[esi]
|
||||
lar ax,[rsi]
|
||||
|
||||
bits 16
|
||||
lsl ax,[ si]
|
||||
lsl ax,[esi]
|
||||
bits 32
|
||||
lsl ax,[ si]
|
||||
lsl ax,[esi]
|
||||
bits 64
|
||||
lar ax,[esi]
|
||||
lsl ax,[rsi]
|
||||
|
||||
; EOF
|
Loading…
x
Reference in New Issue
Block a user