mirror of
https://github.com/uffejakobsen/acme.git
synced 2024-11-22 18:32:09 +00:00
fixed bug where "!skip" areas at start/end were included in output file
git-svn-id: https://svn.code.sf.net/p/acme-crossass/code-0/trunk@419 4df02467-bbd4-4a76-a152-e7ce94205b78
This commit is contained in:
parent
fc98be0ee1
commit
b7037ea990
23
src/output.c
23
src/output.c
@ -203,7 +203,6 @@ void (*output_byte)(intval_t byte);
|
||||
// send low byte to output buffer and remember to later increase program counter
|
||||
static void real_output(intval_t byte)
|
||||
{
|
||||
// CAUTION - there are two copies of these checks!
|
||||
// TODO - add additional check for current segment's "limit" value
|
||||
// did we reach next segment?
|
||||
if (out->write_idx >= out->segm.limit)
|
||||
@ -266,25 +265,11 @@ void output_skip(int size)
|
||||
if (PC_NOT_SET)
|
||||
complain_and_use_dummy_pc();
|
||||
|
||||
// CAUTION - there are two copies of these checks!
|
||||
// TODO - add additional check for current segment's "limit" value
|
||||
// did we reach next segment?
|
||||
// FIXME - this checks whether the final "write that did not really happen"
|
||||
// is already in another segment. but it does not check any of those before, and
|
||||
// they could also have breached (small) segments. so either check all "writes"
|
||||
// or none of them! - atm I prefer "none", because "!skip" does not write...
|
||||
if (out->write_idx + size - 1 >= out->segm.limit)
|
||||
breached_limit(out->write_idx + size - 1);
|
||||
// removed all address checks because "skip" does not actually write!
|
||||
// if a source code starts/ends with "!skip 20", older versions included that
|
||||
// part in the output file, which is stupid and contradicts the fact that empty
|
||||
// segments at the start/end are not included either!
|
||||
|
||||
// FIXME - the checks below do not make sense; why do we treat addresses that
|
||||
// were skipped as if they have been written to? if a source ends on "!skip 20",
|
||||
// why should those bytes be included in the file?
|
||||
// new minimum address?
|
||||
if (out->write_idx < out->lowest_written)
|
||||
out->lowest_written = out->write_idx;
|
||||
// new maximum address?
|
||||
if (out->write_idx + size - 1 > out->highest_written)
|
||||
out->highest_written = out->write_idx + size - 1;
|
||||
// advance ptrs
|
||||
out->write_idx += size;
|
||||
statement_size += size; // count bytes so PC will be adjusted correctly after this
|
||||
|
@ -9,7 +9,7 @@
|
||||
|
||||
#define RELEASE "0.97" // update before release FIXME
|
||||
#define CODENAME "Zem" // update before release
|
||||
#define CHANGE_DATE "21 Aug" // update before release FIXME
|
||||
#define CHANGE_DATE "22 Aug" // update before release FIXME
|
||||
#define CHANGE_YEAR "2024" // update before release
|
||||
//#define HOME_PAGE "http://home.pages.de/~mac_bacon/smorbrod/acme/"
|
||||
#define HOME_PAGE "http://sourceforge.net/p/acme-crossass/" // FIXME
|
||||
|
Loading…
Reference in New Issue
Block a user