💾 Archived View for bbs.geminispace.org › u › stack › 5080 captured on 2023-12-28 at 16:03:50. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-11-14)
-=-=-=-=-=-=-
Just as I was beginning to enjoy low-level assembly coding after a long break, and looking forward to whumpin' on some home-made forth, the bastards got me!
My mom tried to tell me to be normal, and do things the way other people do them, but no! I had to be this weirdo who just gets more and more restless doing things the 'normal' way.
And so, 32-bit code is apparently over, just when I was really embracing the i386, with its limited registers. But I love being able to have a 3-byte, two-instruction NEXT which uses 32-bit execution tokens. And I really miss pusha and popa instructions in 64-bit code. Compactness.
Linux will run static self-contained 386 code, the way I like to write it, but apparently choke (without a meaningful error message, mind you!) on code compiled normally with gcc and libraries, because modern distros come without 386 library support -- even basic things like libc. Because my 1.5GB distro was so concerned about space to add a basic library that's like a couple of megs? And why is libc so big anyway? Why is linux 1.5GB? Maybe my mother was wrong after all, and everyone is in fact insane, just like I always suspected.
Lack of Error Message on executing 32-bit binaries with no 32-bit support
Also, the 32-bit version of Address Space Layout Randomization (which is not that helpful in preventing attacks anyway) is BROKEN, screwing up my nforth by loading code at a fixed address but creating a disjoined segment when I try to adjust memory break.
address randomization tribulations
32-bit support is less important than including at least 10 different visual themes, with multi-megabyte backgrounds created by people who failed art appreciation in high school. More mauve and green zigzags, please! And don't forget a sunrise over stylized Jupiter, please!
So to get my 4Kb forth running, I have to treat the core as a separate segment, which means I can't use 16-bit back-offsets for heads. I suppose it's a kluge, and I can make it a proper 32-bit address, and since heads are aligned to 4-byte boundaries, I can steal the low 2 bits for things like IMMEDIATE bit.
The other option is to make the code truly relocatable, but that is sort of against the grain of this particular, minimalistic project.
Sep 03 · 4 months ago
Your mom was trying to make you abandon assembly code and turn to Javascript but you resisted ? You're strong.
That is correct.
Well, I changed over to 32-bit link pointers, and it works now with address randomization.