summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--assemble.c5
-rw-r--r--doc/nasmdoc.src3
2 files changed, 5 insertions, 3 deletions
diff --git a/assemble.c b/assemble.c
index fbd7caf..eeab9bb 100644
--- a/assemble.c
+++ b/assemble.c
@@ -2635,9 +2635,10 @@ static enum ea_type process_ea(operand *input, ea *output, int bits,
bt = it, bx = ix, s--;
}
if (it == -1 && (bt & 7) != REG_NUM_ESP &&
- (eaflags & EAF_TIMESTWO)) {
+ (eaflags & EAF_TIMESTWO) &&
+ (hb == b && ht == EAH_NOTBASE)) {
/*
- * convert [NOSPLIT EAX]
+ * convert [NOSPLIT EAX*1]
* to sib format with 0x0 displacement - [EAX*1+0].
*/
it = bt, ix = bx, bt = -1, bx = 0, s = 1;
diff --git a/doc/nasmdoc.src b/doc/nasmdoc.src
index 8554a34..dbf8e70 100644
--- a/doc/nasmdoc.src
+++ b/doc/nasmdoc.src
@@ -1459,7 +1459,8 @@ that allows the offset field to be absent and space to be saved; in
fact, it will also split \c{[eax*2+offset]} into
\c{[eax+eax+offset]}. You can combat this behaviour by the use of
the \c{NOSPLIT} keyword: \c{[nosplit eax*2]} will force
-\c{[eax*2+0]} to be generated literally.
+\c{[eax*2+0]} to be generated literally. \c{[nosplit eax*1]} also has the
+same effect. In another way, a split EA form \c{[0, eax*2]} can be used, too.
However, \c{NOSPLIT} in \c{[nosplit eax+eax]} will be ignored because user's
intention here is considered as \c{[eax+eax]}.