Peter Johnson
c855e4061e
Move static structures from .h to .c, include .h in .l.
...
svn path=/trunk/yasm/; revision=492
23 years ago
Peter Johnson
4933f17355
Fix warning.
...
svn path=/trunk/yasm/; revision=491
23 years ago
Peter Johnson
07c3299820
Add bin object format.
...
Changes to:
objfmt interface: added parameter to directive() for sections access.
section interface: moved start to be present for all section types.
basic optimizer: add section start to offset determination.
(much of the section start changes are due to the need to make sure offsets
don't end up being optimized into byte-sized offsets that can't be relocated).
svn path=/trunk/yasm/; revision=490
23 years ago
Peter Johnson
d738a39f49
Allow replacing with no extension (eg w/o an appended '.'). Needed for bin
...
objfmt output.
svn path=/trunk/yasm/; revision=489
23 years ago
Peter Johnson
ba2c819e71
Move BitCount() macro from hamt.c to util.h.
...
svn path=/trunk/yasm/; revision=488
23 years ago
Peter Johnson
96db2a27b2
Add yapp-token.c.
...
svn path=/trunk/yasm/; revision=487
23 years ago
Michael Urman
4818dbe555
Fixed some warnings.
...
The wussy way, cause i didn't comment any of the new prototypes.
svn path=/trunk/yasm/; revision=486
23 years ago
Michael Urman
7c073b5c23
Add const char *in_filename arguments to
...
- preproc initialize function
- parser parse function (to pass to preproc initialize)
so that the preprocessor has a clue what file it's in.
svn path=/trunk/yasm/; revision=484
23 years ago
Michael Urman
2d0615384d
YAPP has arrived.
...
Or at least it has begun. At this point it can only handle:
%define
%if*def
%el*def
%else
%endif
%include (to some degree; needs a lot of thought, but recurses fine)
and replacing simple %defines (like %define foo bar)
And like all code, it's probably horribly inconsistent about variable
names, etc. We'll wash it later.
svn path=/trunk/yasm/; revision=483
23 years ago
Michael Urman
6b65e7a522
Update main files to include support for yapp.
...
This includes defaulting to yapp for ./yasm -e passes.
svn path=/trunk/yasm/; revision=482
23 years ago
Peter Johnson
62750a30d3
Enhance bc_resolve() implementation a bit, but comment out, as this function
...
will probably disappear in the near future (its functionality will be handled
directly by the object format module without the need for another pass).
svn path=/trunk/yasm/; revision=481
23 years ago
Peter Johnson
97772e4452
Support NASM syntax of options such as -fobj (as well as -f obj).
...
svn path=/trunk/yasm/; revision=480
23 years ago
Peter Johnson
5d2e9ea0f0
Allow preprocess-only and setting of preproc. Update main() and related
...
functions to be a bit more clean.
svn path=/trunk/yasm/; revision=479
23 years ago
Peter Johnson
4ee8ccc660
Update bug mailing address to <bug-yasm@tortall.net>.
...
svn path=/trunk/yasm/; revision=478
23 years ago
Peter Johnson
f6f4313ff6
Use non-preprocessed BITS directive so this can be assembled with current YASM.
...
svn path=/trunk/yasm/; revision=477
23 years ago
Peter Johnson
0177d689a1
Revamp object format functional interface a bit. Now, only the output()
...
function gets a FILE *, and it's the only function that can write to a file.
The object file is thus not opened until AFTER parsing and most error checking
is complete. Necessitated adding a special case for the dbg object format
because it needs to output to the "object" (debug) file from essentially every
function. Added a global (debug_file) to support this.
svn path=/trunk/yasm/; revision=476
23 years ago
Peter Johnson
a0d61f00c1
Enable second pass (resolve/calculate known values).
...
svn path=/trunk/yasm/; revision=475
23 years ago
Peter Johnson
f5bf04dd41
Include errwarn.h to declare ErrorAt().
...
svn path=/trunk/yasm/; revision=474
23 years ago
Peter Johnson
01481e7d47
Test circular reference detection. Very basic examples from NASM's docs on
...
critical expressions.
NASM behavior: 1-3 fail, 4 generates a 4-byte offset in the memory expression.
YASM behavior: 1&2 fail (and rightfully so :), 3 works as expected, and 4
generates a 1-byte offset.
svn path=/trunk/yasm/; revision=473
23 years ago
Peter Johnson
964c755067
Indicate actual line number of circular reference error.
...
svn path=/trunk/yasm/; revision=472
23 years ago
Peter Johnson
7217fd10db
Bring up-to-date with traverse function changes. Start trying to check for
...
circular references.
svn path=/trunk/yasm/; revision=471
23 years ago
Peter Johnson
391736c2a6
Correct optimize() comment.
...
svn path=/trunk/yasm/; revision=470
23 years ago
Peter Johnson
f781881f80
Terminate & cleanup early if an error occurs during the optimization phase.
...
svn path=/trunk/yasm/; revision=469
23 years ago
Peter Johnson
8a515e968a
Reverse how traverse functions do early termination (now, they terminate on
...
a non-zero func return and return the value func returned). Document the
changes in the header files.
svn path=/trunk/yasm/; revision=468
23 years ago
Peter Johnson
4f7daa4d39
Fix issue with how symrec's are handled when an expression is copied: old code
...
just assigned the pointer: but the symrec is deleted (if it's not in the symbol
table) when the expr is deleted. Thus, we need to create a copy of the symrec
instead of just reusing the same value if it's going to be deleted later. This
trickles down to objfmt to copy the objfmt-local data.
svn path=/trunk/yasm/; revision=467
23 years ago
Peter Johnson
2f20fc4846
Added --version option. Pass option descriptions, --help, and --version
...
messages through gettext. Rework handling of --version and --help.
svn path=/trunk/yasm/; revision=466
23 years ago
Peter Johnson
90625f71e1
Add semicolon at end of error handling code to fix syntax errors. Only seen
...
on Cygwin so far, but a legitimate error.
svn path=/trunk/yasm/; revision=465
23 years ago
Peter Johnson
7462e32ecf
Bring up-to-date with tree and build changes.
...
svn path=/trunk/yasm/; revision=464
23 years ago
Peter Johnson
ef3eff4f62
Enhance error/warning framework by allowing specific warnings to be disabled,
...
all warnings to be disabled, and warnings to be treated as errors, much in the
style of GNU tools such as gcc.
svn path=/trunk/yasm/; revision=463
23 years ago
Peter Johnson
cf48f57fca
Check for param=NULL before dereferencing it in sopt case.
...
svn path=/trunk/yasm/; revision=462
23 years ago
Peter Johnson
f61b5746f1
Don't compact into a short form if one's not available.
...
svn path=/trunk/yasm/; revision=461
23 years ago
Peter Johnson
044cc90233
Make jcc's default to JR_SHORT in NASM syntax, and test for this possibility
...
in calc_len().
svn path=/trunk/yasm/; revision=460
23 years ago
Peter Johnson
056b3fc52c
Finish bc_calc_len(), with fixes to x86_bc_calc_len_insn()'s EA sizing calcs,
...
and implementation of x86_bc_calc_len_jmprel().
svn path=/trunk/yasm/; revision=459
23 years ago
Peter Johnson
760e3c4d11
In optimize_bytecode(), calculate bc->offset *before* calling bc_calc_len().
...
This is because calc_len may want to know the current bytecode's offset (eg for
determining relative displacement length).
svn path=/trunk/yasm/; revision=458
23 years ago
Peter Johnson
66bf6be085
Implement rest of bc_calc_len for general bytecodes.
...
svn path=/trunk/yasm/; revision=457
23 years ago
Peter Johnson
5b2166d50a
Don't store "determined" immediate len and neg. Both will be determined from
...
the expr when that's actually possible.
svn path=/trunk/yasm/; revision=456
23 years ago
Peter Johnson
6d69fd09ba
Add comment about bc_calc_len() possibly returning -1.
...
svn path=/trunk/yasm/; revision=455
23 years ago
Peter Johnson
4949569151
Fix memory leak.
...
Add assert call to silence LCLint.
svn path=/trunk/yasm/; revision=454
23 years ago
Peter Johnson
3c0a749084
Rework resolve_label() and add a second pass.
...
svn path=/trunk/yasm/; revision=453
23 years ago
Peter Johnson
ee74365f05
Add new bc_resolve() family, and rewrite calc_len to /just/ calculate the
...
length, not modify anything else (particularly expressions w/temp. resolved
labels).
svn path=/trunk/yasm/; revision=452
23 years ago
Peter Johnson
4d77fa5b6b
Add bcs_next (STAILQ_NEXT).
...
svn path=/trunk/yasm/; revision=451
23 years ago
Peter Johnson
ca1fdd915b
Add bcs_first() (STAILQ_FIRST).
...
svn path=/trunk/yasm/; revision=450
23 years ago
Peter Johnson
2258d80f96
Tiny formatting fix.
...
svn path=/trunk/yasm/; revision=449
23 years ago
Peter Johnson
cc635cc237
Change return type of calc_len() family back to int from unsigned long.
...
svn path=/trunk/yasm/; revision=448
23 years ago
Peter Johnson
0276a2db37
- Use new symrec_get_label().
...
- Change optimize() function to return void.
- Pass LCLint.
svn path=/trunk/yasm/; revision=447
23 years ago
Peter Johnson
ef801289fd
Add basic optimizer to checks.
...
svn path=/trunk/yasm/; revision=446
23 years ago
Peter Johnson
a3db6e7106
Remove symrec_get_int_value(), add symrec_get_label().
...
svn path=/trunk/yasm/; revision=445
23 years ago
Peter Johnson
746f2ef74f
General code cleanup.
...
svn path=/trunk/yasm/; revision=444
23 years ago
Peter Johnson
985d4e9b59
LCLint cleanups.
...
svn path=/trunk/yasm/; revision=443
23 years ago
Michael Urman
04b27087a9
Fix one line odd error: missing initialization of step.
...
svn path=/trunk/yasm/; revision=442
23 years ago