I'm porting this from apionet.
raven[x]: it begins.
raven[x]: https://git.citrons.xyz/tinycc
olive[x]: are you aware you can push directly to tinycc proper
raven[x]: what do you mean?
olive[x]: they have a "mob" branch
olive[x]: the idea is like wikipages
olive[x]: anyone can push or so
olive[x]: repo.or.cz has an explanation page somewhere
raven[x]: so, I could commit malware to the mob branch right now?
olive[x]: https://repo.or.cz/h/mob.html
olive[x]: plausibly
olive[x]: just as one can add disinformation to wikipedia
olive[x]: but that is easier to spot
raven[x]: that's true, but ugh.
raven[x]: the last actual commit to master was 8 years ago
olive[x]: the tinycc maintainer is awol
olive[x]: yea
raven[x]: I like the idea of "finished software" that stops receiving
updates. everyone is always saying "dead project!!!1! it's not maintained!!!!"
raven[x]: however.
raven[x]: tcc is far from finished. that's why I'm working on it
olive[x]: lots of Luanti mods are effectively "finished"
viba[x]: > I like the idea of "finished software" that stops receiving
updates. everyone is always saying "dead project!!!1! it's not maintained!!!!"
viba[x]: im still trying to turn off the part of my brain that instantly
discards things based on the last commit date
raven[x]: hm, ok, I'm kind of starting to get how this works in practice
raven[x]:
https://repo.or.cz/tinycc.git/commit/d9a6d9aec058ec92c1ad19ccf9e7913bc8ea945f
olive[x]: miu i can't see what's behind this link
raven[x]:
https://web.archive.org/https://repo.or.cz/tinycc.git/commit/d9a6d9aec058ec92c1ad19ccf9e7913bc8ea945f
raven[x]: ok, I just pushed to the mob branch. hi mom
raven[x]: I did --unset-upstream so I don't accidentally do that.
raven[x]: because I can run git push sort of reflexively sometimes
raven[x]: this is kind of neat. I mean, it's a little scarier of an idea
than wikipedia in my opinion.
raven[x]: because you can't put malware on wikipedia. at least, not easily.
raven[x]: I think it would be interesting to try to take the pseudocode in
architecture manuals and create an interpreter for it
raven[x]: thus deriving an emulator directly from the specification
raven[x]: the assembler does not support PC-relative ADR or LDR. evidently
these aren't needed in the C compiler. the relocations they require are not
implemented in the linker, so to implement them, I'll have to touch the linker
raven[x]: however, actually, that makes me wonder what it does instead.
raven[x]: the limited featureset of the linker implies that you'd probably
have trouble linking code generated by other compilers
raven[x]: ah. I see.
raven[x]: you can just do ldr r0, [pc], offset
raven[x]: um, yes, so, it puts the constant in the middle of the code, loads
with pc as the base register, and then jumps over the constant
raven[x]: that seems at least somewhat suboptimal
raven[x]: nonetheless, I suppose I could use the same approach in my
assembler code and avoid hacking on TCC anymore
raven[x]: because although I think it would be very worthwhile to improve
TCC, it's distracting from the project I'm using TCC for.
rebecca[x]: what's the project?
raven[x]: I've contracted osdev disease again.
raven[x]: I want to make my operating system with TCC, so then I can port
TCC to my operating system, and then have it be selfhosting.
my first target is raspberry pi 3/4