[HN Gopher] Compiling to Assembly from Scratch
       ___________________________________________________________________
        
       Compiling to Assembly from Scratch
        
       Author : AlexeyBrin
       Score  : 31 points
       Date   : 2024-09-22 13:18 UTC (9 hours ago)
        
 (HTM) web link (keleshev.com)
 (TXT) w3m dump (keleshev.com)
        
       | pjmlp wrote:
       | I got the ebook when it came out, and is relatively nice as ramp
       | up into the world of compiler development.
        
       | stonethrowaway wrote:
       | Speaking of embedded systems, I have an old board, an offshoot of
       | Zilog Z80 called Rabbit. I think recently Dave from EEVBlog took
       | apart one of his ancient projects and I was floored to see a
       | Rabbit. Talk about a left hook. Assuming this is Hacker News, I
       | suspect someone probably knows what I'm talking about. The
       | language used (called "Dynamic C") has some unconventional
       | additions, a kind of coroutine mechanism in addition to chaining
       | functions to be called one after another in groups. It's mostly C
       | otherwise, so I suspect some macro shennanigans with interrupt
       | vector priority for managing this coroutine stuff.
       | 
       | Anyhow, so I've got a bunch of .bin files around for it, no C
       | source code, just straight assembly output ready to be flashed.
       | And the text and data segments are often interwoven, each fetch
       | being resolved to data or instruction in real time by the rabbit
       | processor. So I've been thinking of sitting down, going through
       | the assembly/processor manual for the board and just writing a
       | board simulator hoping to get it back to source code by blackbox
       | reversing in a sense. I'd have to rummage through JEDEC for the
       | standard used by the EEPROM to figure out what pins it's using
       | there and the edge triggering sequences. Once I can execute it
       | and see what registers and GPIOs are written when, I can probably
       | figure out the original code path. Not sure if anyone has tips or
       | guides or suggestions here.
        
         | Something1234 wrote:
         | Any chance a decompiler like ghidra might get you part ways
         | there?
        
           | stonethrowaway wrote:
           | The closest I came across was a Z80 simulator, I forget the
           | name of it. But it allowed you to step through command by
           | command giving you ability to query the processor state in a
           | terminal.
           | 
           | So I don't know if it would be easier trying to find this,
           | and updating it to support rabbit, vs trying to wedge
           | something into ghidra which itself is an undertaking of a
           | behemoth platform. As far as I know ghidra does not have Z80
           | support.
        
       ___________________________________________________________________
       (page generated 2024-09-22 23:00 UTC)