mirror of
https://github.com/netwide-assembler/nasm.git
synced 2024-11-21 03:14:19 +08:00
Merge branch 'nasm-2.11.xx'
Resolved Conflicts: assemble.c Signed-off-by: H. Peter Anvin <hpa@zytor.com>
This commit is contained in:
commit
89f78f5010
@ -1,6 +1,6 @@
|
||||
/* ----------------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 1996-2013 The NASM Authors - All Rights Reserved
|
||||
* Copyright 1996-2014 The NASM Authors - All Rights Reserved
|
||||
* See the file AUTHORS included with the NASM distribution for
|
||||
* the specific copyright holders.
|
||||
*
|
||||
@ -1368,9 +1368,12 @@ static int64_t calcsize(int32_t segment, int64_t offset, int bits,
|
||||
static inline unsigned int emit_rex(insn *ins, int32_t segment, int64_t offset, int bits)
|
||||
{
|
||||
if (bits == 64) {
|
||||
if ((ins->rex & REX_MASK) && !(ins->rex & (REX_V | REX_EV))) {
|
||||
if ((ins->rex & REX_MASK) &&
|
||||
!(ins->rex & (REX_V | REX_EV)) &&
|
||||
!ins->rex_done) {
|
||||
int rex = (ins->rex & REX_MASK) | REX_P;
|
||||
out(offset, segment, &rex, OUT_RAWDATA, 1, NO_SEG, NO_SEG);
|
||||
ins->rex_done = true;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
@ -1392,6 +1395,8 @@ static void gencode(int32_t segment, int64_t offset, int bits,
|
||||
uint8_t opex = 0;
|
||||
enum ea_type eat = EA_SCALAR;
|
||||
|
||||
ins->rex_done = false;
|
||||
|
||||
while (*codes) {
|
||||
c = *codes++;
|
||||
op1 = (c & 3) + ((opex & 1) << 2);
|
||||
|
@ -7,6 +7,14 @@
|
||||
The NASM 2 series supports x86-64, and is the production version of NASM
|
||||
since 2007.
|
||||
|
||||
\S{cl-2.11.05} Version 2.11.05
|
||||
|
||||
\b Add \c{--v} as an alias for \c{-v} (see \k{opt-v}), for
|
||||
command-line compatibility with Yasm.
|
||||
|
||||
\b Fix a bug introduced in 2.11.03 whereby certain instructions would
|
||||
contain multiple REX prefixes, and thus be corrupt.
|
||||
|
||||
\S{cl-2.11.04} Version 2.11.04
|
||||
|
||||
\b Removed an invalid error checking code. Sometimes a memref only with
|
||||
|
@ -984,6 +984,9 @@ and the date on which it was compiled.
|
||||
|
||||
You will need the version number if you report a bug.
|
||||
|
||||
For command-line compatibility with Yasm, the form \i\c{--v} is also
|
||||
accepted for this option.
|
||||
|
||||
\S{opt-y} The \i\c{-y} Option: Display Available Debug Info Formats
|
||||
|
||||
Typing \c{nasm -f <option> -y} will display a list of the available
|
||||
|
3
nasm.h
3
nasm.h
@ -1,6 +1,6 @@
|
||||
/* ----------------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 1996-2013 The NASM Authors - All Rights Reserved
|
||||
* Copyright 1996-2014 The NASM Authors - All Rights Reserved
|
||||
* See the file AUTHORS included with the NASM distribution for
|
||||
* the specific copyright holders.
|
||||
*
|
||||
@ -702,6 +702,7 @@ typedef struct insn { /* an instruction itself */
|
||||
int eops_float; /* true if DD and floating */
|
||||
int32_t times; /* repeat count (TIMES prefix) */
|
||||
bool forw_ref; /* is there a forward reference? */
|
||||
bool rex_done; /* REX prefix emitted? */
|
||||
int rex; /* Special REX Prefix */
|
||||
int vexreg; /* Register encoded in VEX prefix */
|
||||
int vex_cm; /* Class and M field for VEX prefix */
|
||||
|
8
test/times.asm
Normal file
8
test/times.asm
Normal file
@ -0,0 +1,8 @@
|
||||
bits 64
|
||||
|
||||
; Broken per BR 3392278
|
||||
times 4 paddd xmm8, xmm11
|
||||
|
||||
; Broken per BR 3392279
|
||||
bswap r12d
|
||||
times 4 bswap r12d
|
Loading…
Reference in New Issue
Block a user