Shamus Hammons [Mon, 13 Jan 2014 03:44:04 +0000 (21:44 -0600)]
Added "legacy mode" to assembler, which is on by default.
Apparently MAC did fixups for programmers who forgot that they couldn't
put a MOVEI immediately after a JUMP or JR, so we do the same to keep
legacy code assembling (though we may flip the default to OFF at some
time in the future :-P). If you don't like the assembler doing stuff like
that behind your back, you can tell it not to by adding the -n switch to
your command line.
There are lots of other cases that the user should be warned about with
RISC code; these will be added in future commits. :-)
Shamus Hammons [Sat, 9 Nov 2013 15:01:57 +0000 (09:01 -0600)]
Fixed subtle bug in expr().
Basically, expr() was looking at the token following the one it was
looking at and bypassing the longer parse path if it found an EOL token
there. Problem is, some tokens have follow on values and so can be
considered compound tokens. In this case, the EOL token codes to 101,
having a constant with a value of 101 will not evaluate correctly in
this case as the CONST token is a compound token.
The short of this is that making assumptions is BAD! Don't do it! It
WILL come around to bite you in the ass eventually, in the form of
subtle bugs that are difficult to chase down. Assume nothing!
Shamus Hammons [Wed, 13 Feb 2013 02:14:47 +0000 (20:14 -0600)]
Fixed .cargs problem, more code cleanup/fixup
Thanks to GroovyBee for reporting the .cargs problem! Also, pretty much
all of the remaining cruft coming from the misguided "GPU in Main" cult
has been removed. Never do in an assembler what you can do with either
macros or a good preprocessor!
Shamus Hammons [Tue, 12 Feb 2013 18:32:56 +0000 (12:32 -0600)]
First stab at removing cruft.
Removing all automatic code munging in the background by the RISC
compiler, including GPU in main idiocy. This means there are no more
built-in macros either. If you really needed this functionality, you can
put macros in your source code to do it. It doesn't belong in the guts
of the assembler.
Shamus Hammons [Sat, 2 Feb 2013 21:04:59 +0000 (15:04 -0600)]
Fixed compiler not checking for INCBIN in BSS sections.
Apparently the compiler did not care if an INCBIN happened in a BSS
section or not. Now the compiler cares and gives an error if you try to
do this terrible, terrible thing. :-D
Shamus Hammons [Mon, 26 Nov 2012 04:49:46 +0000 (22:49 -0600)]
Fixed problem with nested MACROs.
While the assembler is in better shape vis-a-vis 64-bitness, there's
still a long way to go towards refactoring the thing to remove all
the problems it has with crufty data structures, and I'm sure there's
still bugs left in things like the .rept directive.
Shamus Hammons [Sat, 24 Nov 2012 19:48:52 +0000 (13:48 -0600)]
First working 64-bit version of RMAC
There's still lots to do, like refactoring a bunch of stuff that's
still basically wrong, but that's par for the course. There may be
more things that need fixing (like the .rept function, for example).
Shamus Hammons [Fri, 23 Nov 2012 16:39:09 +0000 (10:39 -0600)]
Code cleanup and prepartion for 64-bit host fixes
I removed a few functions that are better off being handled by the
native system libraries (malloc for amem, strdup for nstring). Also,
cleaned up files in preparation for removing pointers from the token
stream--which is preventing RMAC from working on 64-bit systems.
Corrected definitions of BYTE, WORD and LONG to appropriate uintN_t values.. (it's warning like a mofo at the moment but tested and it assembled happily enough 68K and RISC)