4 ms·
I wonder if we'll still be running x86 code a hundred years after it came out (according to Wikipedia, it came out in 1978). We are already 48 years in.
by Zeetah 7mo ago
I wonder if we'll still be running x86 code a hundred years after it came out (according to Wikipedia, it came out in 1978). We are already 48 years in.
- cmrdporcupine 7mo agoReally when people say x86 now tho they don't mean that. They really mean the variant introduced with the 386 which has a linear memory model, memory protection, etc. Or x86_64 which is philosophically akin to the 386 but really a new ISA. So it's really more like mid-80s or early 2000s, not late 70s.
- M95D 7mo ago^ that! You can't run a COM program today. Not without emulation. Recent PCs can't even run DOS EXE because they're missing the BIOS interrupts most DOS programs use.
- anthk 7mo agoNo, you are wrong. DOS COM files if 16 bit can't be run on 64 bit CPU's but 32 bit DOS binaries can be run under 32 bit GNU/Linux installs with DosEMU straight by just emulating the BIOS part, the rest is native.
- M95D 7mo agoYou actually confirmed what I said. :)
- anthk 7mo ago50/50, because once you boot a 32 bit os you can run 16 bit binaries :) I'm pretty sure that if I make a dual-kernel 9front (9pc and 9pc64 available at boot) in a 64 bit machine and I compile emu2 for it, DOS COM binaries might be trapped enough to run simple text mode tools under the 386 port.
- rep_lodsb 7mo agoIt has nothing to do with being unable to run 16-bit code, that's a myth. https://man7.org/linux/man-pages/man2/modify_ldt.2.html https://man7.org/linux/man-pages/man2/modify_ldt.2.html Set seg_32bit=0 and you can create 16-bit code and data segments. Still works on 64 bit. What's missing is V86 mode, which emulates the real mode segmentation model.
- anthk 7mo agoThat can be trapped for sure.
- mifydev 7mo agoYou can just boot freedos to run them, it will execute in real mode which has the same cpu instructions as 40 years ago.
- M95D 7mo agoUEFI switches the CPU into 32bit v86 mode or directly in 64bit mode and you can't go back to real mode without a CPU reset, which v86 won't allow (you don't have ring -2 privileges) and 64bit mode can't do at all. I don't have a UEFI system, so I might be wrong (I even hope I'm wrong - it would mean slightly more freedom still exists), but from what I read about it, I'm 90% certain it's not possible.
- rep_lodsb 7mo agoYou're confusing several things here. The only x86 processor that didn't allow returning to real mode was the 16-bit 80286 - on all later ones it's as simple as clearing bit 0 of CR0 (and also disabling paging if that was enabled). Nothing more privileged than ring 0 is required for that. "v86" is what allowed real mode to be virtualized under a 32-bit OS. This is no longer available in 64-bit mode, but the CPU still includes it (as well as newer virtualization features which could be used to do the same thing).
- M95D 7mo agoYou can write to CR0 from a DOS COM program while in V86 mode??? :o Wouldn't that cause a GPF / segfault / EMM386 crash?
- yjftsjthsd-h 7mo agoCan you boot freedos on new hardware? I was under the impression that it needs BIOS/CSM and that may or may not be an option on new machines.
- cmrdporcupine 7mo agoEven if you could/can it is an anachronism. Architecturally there's just a huge difference between 8086 and even 80286 and the 386. Before the 386 I wouldn't touch a machine with an Intel processor in it. Once the 386/486 penetrated the market and became cheap it was game over for everything else because it was good enough (linear address space, memory protection, larger address space, 32-bit etc etc), smart enough, gosh darn it it was cheap and everywhere.