nasm/test/immwarn.asm
H. Peter Anvin 588df78b0d New opcode for 32->64 bit sign-extended immediate with warning
Add a new opcode for 32->64 bit sign-extended immediate, with warning
on the number not matching.

This unfortunately calls for an audit of all the \4[0123] opcodes, if
they should be replaced by \25[4567].  This only replaces one
instruction (MOV reg64,imm32); other instructions need to be
considered.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2008-10-07 10:05:10 -07:00

91 lines
1.4 KiB
NASM

;Testname=onowarn; Arguments=-Ox -DOPT=1 -DWARN=0 -fbin -oimmwarn.bin; Files=stdout stderr immwarn.bin
;Testname=owarn; Arguments=-Ox -DOPT=1 -DWARN=1 -fbin -oimmwarn.bin; Files=stdout stderr immwarn.bin
;Testname=nowarn; Arguments=-O0 -DOPT=0 -DWARN=0 -fbin -oimmwarn.bin; Files=stdout stderr immwarn.bin
;Testname=warn; Arguments=-O0 -DOPT=1 -DWARN=1 -fbin -oimmwarn.bin; Files=stdout stderr immwarn.bin
%ifndef WARN
%define WARN 1
%endif
bits 16
push 1
%if WARN
push 0ffffffffh
%endif
push -1
push 0ffffh
push byte 0FFFFh
add ax,0FFFFh
%if WARN
add ax,0FFFFFFFFh
%endif
add ax,-1
add ax,byte 0FFFFh
%if WARN
add ax,byte 0FFFFFFFFh
%endif
add ax,-1
add cx,0FFFFh
%if WARN
add cx,0FFFFFFFFh
%endif
add cx,-1
add cx,byte 0FFFFh
%if WARN
add cx,byte 0FFFFFFFFh
%endif
add cx,-1
bits 32
push 1
push 0ffffffffh
push -1
push 0ffffh
push byte 1
%if WARN
push byte 0ffffh
%endif
push byte -1
push word 1
push word 0ffffh
push word -1
push dword 1
push dword 0ffffffffh
push dword -1
add eax,0FFFFh
add eax,0FFFFFFFFh
add eax,-1
add ecx,0FFFFh
add ecx,0FFFFFFFFh
add ecx,-1
bits 64
mov eax,7fffffffh
mov eax,80000000h
mov rax,7fffffffh
mov rax,80000000h
%if WARN
mov rax,dword 80000000h
%endif
add rcx,0FFFFh
%if WARN
add rcx,0FFFFFFFFh
%endif
add rcx,-1
add ecx,0FFFFh
add ecx,0FFFFFFFFh
add ecx,-1
push byte 1
%if WARN
push byte 0ffffffffh
%endif
push byte -1