| Gopher2600 | https://github.com/JetSetIlly/Gopher2600 |
| Gopher2600 | https://github.com/JetSetIlly/Gopher2600 |
Just had a very informative conversation with #chatgpt about the DWARF format.
How it manages to keep track of what you've previously discussed is very impressive.
DWARF records lexical blocks along with an address range. Sounds useful for deciding if a local variable is in scope or not ( ignoring whether it's actually addressable)
Take the code in the image. The i variable you would think be in a lexical block defined for the entire for loop. But no. The block is defined to cover only the loop declaration line, presumably because it's not referenced after that.
DWARF is very powerful but it's very annoying and difficult to work with.
Unveiling of new #atari2600 cartridge tech on the Zero Page Homebrew Twitch stream this evening. Very exciting!
I've been hard at work on Gopher2600 this week, adding support for local variable inspection for ARM programs.
DWARF location lists can get quite hairy and I've not implemented all the stack operations yet but this screenshot is a good illustration of my progress so far.
The green line in the source window is where the program has stopped due to a breakpoint and the local variables window shows the variables in scope at that point in the program.
Games for the #atari2600 now have the option of using an ARM processor on the cartridge. Developing games therefore can be done in a mixture of 6507 assembly and compiled C for the ARM.
My emulator Gopher2600 has some special features to help develop for the ARM. Performance profiling has been in a while and is being successfully used. And today I've finally managed to get breakpoints working. Very pleased with this. It'll make a big difference to the 2600 scene I think.
Just needs polish...