Re: A83: 83 Disassembler


[Prev][Next][Index][Thread]

Re: A83: 83 Disassembler




  The disassembler was quite easy to write really (I
have spent 3 days max on it so far), labels were
incorporated early on and were not a problem. (They
are named label1, ect..)  It already detects shell /
modular programs, but doesn't do anything about it
yet.

  The hardest part is with the .db 's   You can pretty
much say that if the command is "ld rr, (xxxx)" then
it is a .db/.dw (with a few exceptions)
but it gets confusing with "ld rr, xxxx" that could be
a .db or it could be code like this where you copy
code to a place in memory.

ld hl, xxxx
ld de, 8484h
ld bc, 12
ldir


The only thing that will solve part of this problem is
to say if it is accessed with one of the many commands
that can be used on .dbs and is not addressed in any
other way, then it is a db.  Which is pretty simple
but  will not always work.

  I make it output 2 files (3 if it was squished), the
first has the format of regular sources but the second
does like Linus mentioned (sorry Linus I did it before
I read your email) to make it easy to debug, ect...

yyyy xx code    ; address data code


It sticks in all rom equates ect too so you don't have
to look them up (call _htimesl, ect..)  Most programs
without .db statements decompile flawlessly (squish,
zasmload), the others decompile wierd but are fully
recompilable the way they are. The .db statement just
looks like a block of code.  

  Hopefully 82 support will come next (basically just
use a different inc file) then 83+ and possibly 85,
ect...

  I haven't been around much since I have started
working full time in January.  I also lost my internet
connection but I still do quite a bit of programming
and contemplating.

Jimmy Conner


--- Jkhum98@aol.com wrote:

> Hmm, those are some very good ideas, not something
> that wll be fun to code 
> though, but i can see no other way to do it. You
> should also detect if it's 
> shell compatible, and by the headers that we know,
> turn that into .db and .dw 
> statements accordingly... That part about searching
> for RET statements in 
> subroutines might not always work though. The
> programmer could at any point 
> in there pop the return address of the stack and do
> a jump if they wanted to. 
> You'd have to keep track of any other calls and
> jumps in there.... Hmm, if 
> this program you are making is also going to be for
> the 83+, that may get a 
> little messier, because on there you know that calls
> to subroutines are a 
> macro of a Restart statement followed by the word
> address of where to make 
> the call. I suppose in the process of displaying the
> dissassembly for those, 
> you could just turn it into " bcall(Label)" whenever
> you come to a RST $28 
> command... Well, this sounds like a cool program
> though. So thats where youve 
> been for a while, making this... =P  Anyways, good
> luck to ya on 
> incorporating the code to fix this problem, cya...
> 
> Jason_K

=====
»»»»»»»»»»»»»»»«««««««««««««««
»      TIMagic@goatse.cx     «
»  http://www.zed80asm.org   «
» http://www.timagic.cjb.net «
»»»»»»»»»»»»»»»«««««««««««««««
__________________________________________________
Do You Yahoo!?
Bid and sell for free at http://auctions.yahoo.com


Follow-Ups: