mirror of
https://github.com/netwide-assembler/nasm.git
synced 2025-11-08 23:27:15 -05:00
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>
This commit is contained in:
4
insns.pl
4
insns.pl
@@ -658,7 +658,7 @@ sub byte_code_compile($) {
|
||||
# This allows us to match the AMD documentation and still
|
||||
# do the right thing.
|
||||
unshift(@codes, 0160+$oppos{'d'}+($oc0 ? 4 : 0));
|
||||
} elsif ($op =~ /^(ib\,s|ib|ib\,w|iw|iwd|id|iwdq|rel|rel8|rel16|rel32|iq|seg|ibw|ibd|ibd,s)$/) {
|
||||
} elsif ($op =~ /^(ib\,s|ib|ibx|ib\,w|iw|iwd|id|idx|iwdq|rel|rel8|rel16|rel32|iq|seg|ibw|ibd|ibd,s)$/) {
|
||||
if (!defined($oppos{'i'})) {
|
||||
die "$fname: $line: $op without 'i' operand\n";
|
||||
}
|
||||
@@ -676,6 +676,8 @@ sub byte_code_compile($) {
|
||||
push(@codes, 034+$oppos{'i'});
|
||||
} elsif ($op eq 'id') { # imm32
|
||||
push(@codes, 040+$oppos{'i'});
|
||||
} elsif ($op eq 'idx') { # imm32 extended to 64 bits
|
||||
push(@codes, 0254+$oppos{'i'});
|
||||
} elsif ($op eq 'iwdq') { # imm16/32/64, depending on opsize
|
||||
push(@codes, 044+$oppos{'i'});
|
||||
} elsif ($op eq 'rel8') {
|
||||
|
||||
Reference in New Issue
Block a user