intnum to not allocate bitvectors for "most" negative numbers.
We pay a bit more in conversion, but save big in terms of memory and
malloc/free calls
(e.g. ~10,000 allocations and ~250K bytes for elf-x86id.asm test).
svn path=/trunk/yasm/; revision=1900
parser.
Add testcase for both local labels and .org fill.
Noticed by: Jung Lee <moorang@gmail.com>
Testcase from: Xiaoming Mo <xiaoming.mo@skelix.org>
svn path=/trunk/yasm/; revision=1899
Fix a nit in yasm_linemap_poke() for the case when set() has not been
called before calling this function; the prior behavior could result
in incorrect line numbers due to not properly adjusting the new line
number.
svn path=/trunk/yasm/; revision=1896
customize on the arch side of things. Instead of passing around an
arch_data[4] for instructions, now the arch can extend the structure itself
to add additional information in any format it likes.
svn path=/trunk/yasm/; revision=1889
the wrong level. As we weren't changing numterms before either, this
really could have no effect other than not freeing the memory immediately
(it would be freed later).
svn path=/trunk/yasm/; revision=1885
All are 64-bit capable and thus should set CPU_Hammer; Prescott
was mistakingly also setting AMD features such as 3DNow.
svn path=/trunk/yasm/; revision=1870
Two forms are legal ({} are replaceables):
SECTION {segname} {sectname}
SECTION {sectname} segname={segname}
Also,
SECTION {sectname}
where sectname is unrecognized is also legal, defaults segname to __TEXT,
and generates a warning.
Contributed by: bird-yasm@anduin.net
svn path=/trunk/yasm/; revision=1852
makes value/parameters more well-defined and flexible enough to handle
string parameters. Value/parameters would now be better called name/values,
but avoid changing the name for now.
svn path=/trunk/yasm/; revision=1851
from libyasm core. Now absolute sections are tracked locally to the parser
and the parser generates EQUs directly for labels in absolute sections.
Fixes#106 and #103.
svn path=/trunk/yasm/; revision=1842
rax/eax/ax operand. This operand actually selects the address size, so
make it a memory operand instead of a register operand (GAS follows this
approach as well). Enable SVM instructions in non-64-bit mode as well.
Now the following opcodes work as intended:
invlpga [rax/eax/ax], ecx
skinit [eax]
vmload/vmrun/vmsave [rax/eax/ax]
Noticed by: arkon@ragestorm.net
MFC after: 2 days
svn path=/trunk/yasm/; revision=1840
the rounding increment at the end of float conversion to wrap the mantissa
from all 1's to 0, resulting in an incorrect result.
svn path=/trunk/yasm/; revision=1836
Noticed by: arkon@ragestorm.net
Fix bug relating to recognizing crc32 rax, bh as an error: the opersize=64
changing into REX prefix was happening too late to be caught as an error.
Move this logic from tobytes()/len() functions into finalize(), with proper
prefix handling.
MFC after: 2 days
svn path=/trunk/yasm/; revision=1835
been using a mix of tabs and 4 spaces to indent; this looks horrible if
tab size is ever not 8. While I debated converting to tab-only indentation
that would have been a far higher impact to the source.
svn path=/trunk/yasm/; revision=1825
and common declare. The latter no longer passes through objfmt at parse time;
instead the objfmt must handle them at output time (objfmt-specific
extensions are parsed & stored by the parser). Directives are now handled
using a list (with function pointers) rather than a single function entry
point.
svn path=/trunk/yasm/; revision=1819