mirror of
				https://github.com/netwide-assembler/nasm.git
				synced 2025-10-10 00:25:06 -04:00 
			
		
		
		
	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>
		
			
				
	
	
		
			92 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			NASM
		
	
	
	
	
	
			
		
		
	
	
			92 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
 |