by rjinman on 10/2/24, 6:35 PM with 14 comments
by pjc50 on 10/3/24, 3:32 PM
> The need to keep things simple tempered any urge I might've had to generalise prematurely with needless abstraction
Probably the defining characteristics of assembly. Not only does it not provide abstractions, it doesn't provide any metaprogramming tools (other than simple text macros) to help you build any either.
For a long time I've had in my ideas folder the phrase "typesafe macro assembler?" The idea would be to build the language people sometimes think C is but isn't: it would provide some sort of record type (struct), register allocation, checking to see if you've assigned one thing to a storage location of a different type, and little else. Possibly a means to define a calling convention for caller-saved vs callee-saved registers; possibly some basic structured programming block tools to de-sphagetti your code. Crucially, it would emit exactly the operations you specify (including weirder mnemonic instructions and highly platform specific ones) in the order you specify them.
by tuckerpo on 10/3/24, 3:51 PM
We targetted a real SoC, though, so a lot of my implementation can be thought of as a "board support package" or HAL, twiddling LEDs, taking in input, TTY in/out, i2c, timers, IRQ/FIQ handlers, etc...
Assembly programming in general is more or less just getting a feel for any given ISA's most important instructions, mnemonics ordering and data/code separation. The rest is a walk in the park if you're comfortable with boring old procedural programming.
by ykonstant on 10/3/24, 9:54 AM
by Irus_24 on 10/3/24, 3:00 PM
by rep_lodsb on 10/3/24, 10:50 AM
Sadly it doesn't work on my system: the display is drawn at the start (sometimes partially), and then only ever updates when switching between virtual consoles.
Tried adding O_SYNC to the open flags for the framebuffer, and it didn't help. It's writing to the device 60 times per second, just won't show for some reason.
by snvzz on 10/3/24, 1:15 AM