Merge branch 'nasm-2.11.xx'

Resolved Conflicts:
	assemble.c

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
This commit is contained in:
H. Peter Anvin 2014-05-21 08:30:40 -07:00
commit 89f78f5010
6 changed files with 29 additions and 4 deletions

View File

@ -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);

View File

@ -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

View File

@ -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
View File

@ -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
View 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

View File

@ -1 +1 @@
2.11.04
2.11.05