4 ms·
You're insinuating that x86 isn't useful. Why do you think so? (Not trying to be combative—I'm genuinely curious).
by groovy2shoes 10y ago
You're insinuating that x86 isn't useful. Why do you think so? (Not trying to be combative—I'm genuinely curious).
- Const-me 10y agoWell, not completely useless, at least for now. However, these days it’s much less useful than amd64. PCs: Steam hardware survey currently says “Windows 64 bit: 87.64%, Windows 32 bit: 8.08%” Some person from MS said 2 years ago “no less than 92.8 percent of the new PCs sold worldwide and running Windows are powered by a 64-bit of the company’s operating system” Macs: the OS doesn’t support 32-bit hardware since 10.7 Lion. What else runs x86, servers? Microsoft just stopped making 32-bit server OSes, Windows Server 2008 was the last one of them. Don’t know what’s happening in *nix world, but I’d be surprised to learn 32-bit OSes still popular there, servers typically have lots of RAM.
- groovy2shoes 10y agoI think I see where you're coming from. It's pretty much a matter teaching the most common thing, since common implies widely-applicable which implies most useful in practice. I think that's a fair point, and should certainly be a consideration to anyone planning to teach any topic in comp sci. However, having taken a semester-long course on 16-bit (8086) assembly language back in college (with MASM running in DOSBox on OSX, of course ;) ), I've never found any need for any further coursework or tutorial-style texts/articles/whatever in order to later write 32-bit x86 or amd64 (or even ARM, PPC, 68k, or 6502) assembly language. Just the reference manuals were enough, because the mindset is largely the same. I feel as though it's broadly similar to other programming paradigms, where if you learn a procedural language, there's no real need to study another before starting to code. > What else runs x86...? Well, as far as I know, every amd64 machine can run 16- or 32-bit x86 machine code. So, I'd say pretty much all of your examples of amd64 machines run x86 :p
- Const-me 10y agoIf you want to teach concepts and make it easier to understand and complete assignments, then yes, 16-bit assembly is fine. Much easier than both modern x86 and amd64 instruction sets. IMO modern x86 CPUs are not designed for humans. For example, x87 FPU is deprecated, by default no modern compiler emits those instructions because SSE2 is typically faster even for scalar values. While making compiled programs faster, it also makes reading and writing floating-point assembler code harder compared to the legacy x86. > every amd64 machine can run 16- or 32-bit x86 machine code Only when running on bare metal. Modern operating systems restrict which code you can run on them. For example, in Windows 64, in kernel mode you can’t even use x87 FPU instruction set.