number, rather than the last parsed line number. Also improve
"cannot reference symbol" error a bit, to include the symbol name.
svn path=/trunk/yasm/; revision=1643
rather than simply taking a list of modules on the command line. This allows significant
improvement of the behavior when used with Visual Studio, as the "old" way of doing this
with Visual Studio build files was to scan through the .c files; this brought up things
that were actually disabled in the build.
Also incorporate a patch by Charles Bailey to make the VC8 build less noisy, and allow use
of Win32 Bison if it's installed. Instructions updated as well.
svn path=/trunk/yasm/; revision=1642
16-bit operations don't clear the high bits of the 64-bit register, so
this is effectively a NOP as well.
While I'm still looking at this, make "xchg rax, rax" not output a REX
prefix.
I thought about being extra-clever and have "xchg ax, ax" not output an
operand-size prefix, but thought better of it: if the user says "ax"
they're probably going to expect the prefix to be there. Left in as
a comment for future readers of the code.
svn path=/trunk/yasm/; revision=1639
recursively in yasm_expr__bc_dist_subst(); before this we would only do
one level, which fails on simple structures like the old NASM align approach
of "($$-$) & value" (as the $$-$ is one level down in the expression).
svn path=/trunk/yasm/; revision=1635
PC-relative relocations (jumps and calls).
- Allow SEG:OFF to be used as just an offset portion (like NASM does).
- Labels in absolute sections that are declared global are given the correct
absolute value in the symbol table.
One difference from NASM:
label equ 0040h:001eh
jmp label
in NASM means the same as:
jmp 001eh (a near jump)
but yasm will treat this the same as:
jmp 0040h:001eh (a far jump)
I'm still not completely happy with this implementation, but it's workable
and fixes all the bugs I've found so far in absolute handling.
svn path=/trunk/yasm/; revision=1634
Also remove float (gdtoa and softfloat) directory, as no one is asking for
floating point calculation, we've never integrated any of this code, and
it's just taking up space (note it's still available on a branch).
svn path=/trunk/yasm/; revision=1622
on QB. We use this flag other places, but forgot to set it here. This
could cause an infinite loop in (rare) situations.
Reported by: Brian Gladman <brg@gladman.plus.com>
(also committed the code he sent that hits this bug as a testcase)
svn path=/trunk/yasm/; revision=1613
displacement length and required optimization would end up with 0
displacement length, causing an internal error).
svn path=/trunk/yasm/; revision=1606
from bytecode.len into bytecode.mult_int. Add new function
yasm_bc_next_offset() to handle the most common use case of bytecode.len,
figuring out the following bytecode's offset.
svn path=/branches/new-optimizer/; revision=1586