Finishing my studying of Elf Utils' commandline tools...
After parsing commandline flags srcfiles gathers an array of all source files (via LibDWFL & a callback which iterates over each entry's sources canonicalizing filepaths), & outputs that data with or without LibArchive compression. This command's implemented in C++, not C.
After initializing I/O locking & internationalization whilst parsing commandline flags stack might output a list of all modules via LibDWFL & a callback.
Once its initialized some data it retrieves the callstack(s) from the DWFL file, outputs them as text, & cleans up.
After init'ing I/O locking & i18n whilst parsing commandline flags strings iterates over remaining commandline args (falling back to processing stdin) opening each given filepath.
`strings read the file in a pagefull at a time (or mmap it if possible) reformatting it into text. Or it iterates over the ELF file to determine which section to apply that processing to.
A 4/5th iteration rellocates indices. A 5/6th outputs new sections. An optional one tidies section types, with another optional one tidying symboltables.
4.1/4.1 Fin for today! I need to get going! Tomorrow: Finish with unstrip!
Audio tends to lean heavily on prerecorded samples, often with some degree of artistic post-processing. Getting timing spot-on is critical! Which we often achieve using an atomic ringbuffer.
Imagery require whole infrequently-changing megabytes if not gigabytes of data 30+ times a second. Often generated using symbology, "interpolations" across time and/or space, & geometric transforms. Once we've computed where to put everything onscreen!
Text is an information-dense medium for computers to work with, even if its very specific to the "locales" (a.k.a. cultures) you're dealing with. Its rare to find hardware today which can directly output text, for great reason! Our apps tend to lean heavily on domain-specific languages & internationalization tools.
Under the hood we tend to iterate over text, parse it, & concatenate it.
Time we can only observe passing. Randomness we can approximate, mix, & extrapolate; not create.
Can I finish studying ELF Utils' commandline tools today?
After initializing I/O buffering & internationalization whilst parsing commandline flags objdump iterates over remaining arguments, handling single-arg specially.
For each arg it opens the given ELF file recursing into archives, opens an LibEBL backend, outputs a header, initializes various strings, retrieves the section-header string table index, & outputs it in a choice of format each involve an iteration over the ELF sections.
... retrieves S & P header counts, considers initializing fresh LibEBL output, & outputs desired attributes amongst numerous choices. This is the vast majority of readelf's code! Some of these function-calls are macro-generated.
After initializing I/O locking & internatoinalization whilst parsing commandline flags size iterates over remaining args defaulting to a.out, before outputting resulting counts.
For each commandline arg recursing into archives size may output data from it in one of 4 formats iterating over P headers or sections once or twice. For the BSD format it sums memory-sizes from the section-iteration with and across all args to output them at the end.
4.5/4.5 Fin for today! Tomorrow: Finish Elf Utlis' commands!
Some ideas I'm considering for my next hypothetical device to explore, now that I've finished discussing a hardware-Internet Communicator with self-hosted maintenance:
Continue that hypothetical to add multi-accounts, mapping, richer IM, publishing, and/or painting images.
modern CDi (could draw plenty of other retro comparisons...) equivalent running LÖVE & Lua on a RISC32fimv; with hardly a graphics or sound card!
How much computational power is desired for video creation?
Early votes are unanimous! By Monday (once I've finished studying ELF Utils & gathered my threads to publish) I'll start discussing how I'd hardware-accelerate SQL.
Going over all the details in implementing an RDBMS!
I've got the start of an idea already... Any guesses?