Re: New 65XX Assembler on the block
Posted: Fri Mar 29, 2019 2:52 pm
I may allow linkage to be separated out. Presently, all assembly is done in "stages" each stage is a singleton, but expects the input to be from the previous stage, meaning some stages might crash if given input that has not been run through the prior stages first. Although the way that I'm doing it is not really the *most* optimal way, the nice thing is it is almost entirely static with (O)n being the complexity for each stage except macro parsing, which is (O)n*deepestMacro for nested macros. Certain other stages are a little bit over (O)n but they're all at most logarithmic, not exponential.
I will say, I think the main thing my assembler has to offer is simplicity. I'm using it for all my programs simply because it's easier to use than others. I plan on getting this up to the level of others, but allowing for simpler programs to be assembled easily without the need for makefiles or complex setup. Presently, it goes from code in to written EEPROM in about 20 seconds, with about 19.5 seconds of that being writing the eeprom one byte at a time (haven't setup my arduino to accept multiple bytes at once) This is with only 3 includes, and each file that's included is not very big (system vars that lays out EQUates for addresses of different devices, number converter that can convert binary data to ascii decimal data, and the display driver, which I just modified to use less macros (and hopefully save some code space) that controls writing strings to the display.)
I think that the next feature I'll work on is DP relocation support, so it won't crash if you try and do that (since it currently uses <255 for detecting DP usage). I think that, for macro and var detection on included files, adding a feature to avoid clashing would probably be useless, since it could break intended references to other files.
Definitely a long way to go before this assembler can hold any weight against others, but I'm pretty happy with the progress.
I will say, I think the main thing my assembler has to offer is simplicity. I'm using it for all my programs simply because it's easier to use than others. I plan on getting this up to the level of others, but allowing for simpler programs to be assembled easily without the need for makefiles or complex setup. Presently, it goes from code in to written EEPROM in about 20 seconds, with about 19.5 seconds of that being writing the eeprom one byte at a time (haven't setup my arduino to accept multiple bytes at once) This is with only 3 includes, and each file that's included is not very big (system vars that lays out EQUates for addresses of different devices, number converter that can convert binary data to ascii decimal data, and the display driver, which I just modified to use less macros (and hopefully save some code space) that controls writing strings to the display.)
I think that the next feature I'll work on is DP relocation support, so it won't crash if you try and do that (since it currently uses <255 for detecting DP usage). I think that, for macro and var detection on included files, adding a feature to avoid clashing would probably be useless, since it could break intended references to other files.
Definitely a long way to go before this assembler can hold any weight against others, but I'm pretty happy with the progress.