The x86 architecture is the weirdo, part 2
I have a theory that CPU architectures implicitly have something I call the "architectural weirdness budget", which is the extent to which you can get away with design decisions in the architecture or ABI that differ from the existing established consensus. Any time you do something a bit odd that means that existing software has to do awkward things or might not be no-changes portable to your new architecture, you're spending a bit of your weirdness budget. Some examples:<p>+ HPPA's upwards-growing stack<p>+ SPARC register windows<p>+ PowerPC's slightly oddball varargs ABI<p>+ CHERI capabilities are massively spending weirdness budget<p>+ these days, being big-endian is spending weirdness budget<p>Doing a few odd things is fine, but if you blow your weirdness budget entirely then your new architecture is in danger of failing because you've cumulatively made adoption of it too expensive for the existing software ecosystem. So you need to be careful that you're spending it on things that really matter; if something's not a big deal, do it the same way everybody else does. (Certainly some of the things in the list above are deliberate choices for things that are, or at least seemed at the time, important. But nobody tried to do all of them at once!)<p>Of course if you're a pre-existing dominant architecture like x86 then you get a lot more freedom to do weird things :-)