On Tue, 24 May 2016, Fred Cisin wrote: > (OB_Picky: Due to the overlap of segment and offset, on machines that had 21 > address bits, real mode actually had a maximum of 1114096 (10FFF0h) bytes, > instead of 1048576 (100000h).
This was always the biggest pustule on the facade of x86 to me. Gate A20 and other chicanery was nasty business. It always struck me as a hardware hack to work around earlier bad design. Sure, you can eschew segmentation and try to use multiple instructions to delivery some flat addressing, and then your code was snail-slow. Real mode in 16 bit on x86 was/is some fairly vulgar stuff due to segmentation (hate hate hate). Then it was made "all better now" by protected mode and segment descriptors later *pat pat*. Yeah. Ugh. Pleah. Ick. All that fun sent me running into the arms of the M68k and it's git, and later MIPS (queue hallelujah chrous from the clouds). I'm not a MIPS god (we have a some here), but much love and respect to the architecture nonetheless. I know enough to know "that's the good stuff". Nowadays I wonder, since I'm using flat memory on the Unix boxes I code in (now pretty much just in C, I haven't done ASM in a long while), what kind of masochist maintains the SLAB/SLUB allocators for x86 Unix variants these days. I want to buy them a six pack, pat them on the back, and say "you're a braver man than, I." -Swift