Non-x86 targets for DMD
Patrick Schluter via Digitalmars-d
digitalmars-d at puremagic.com
Thu May 25 14:15:57 PDT 2017
On Thursday, 25 May 2017 at 20:47:42 UTC, solidstate1991 wrote:
> On Monday, 22 May 2017 at 14:49:46 UTC, Stefan Koch wrote:
>>
>> Conditional execution is not in the later models of ARM, I
>> believe.
>> Also does not really provide advantages over conditional
>> jumps, except in rare circumstances.
>
> That might be the case, maybe that's how they made space to
> address the 32 registers by cutting the rarely used conditional
> execution function.
No, they removed it from AArch64 because it complicates things on
modern Out Of Order Execution high performance CPU. It was a
brillant idea on the original ARM design that had no caches and a
very small transistor budget, but doesn't bring much, or even is
hindering, in the times of pipelining, OOOE and branch
predictions.
The transition from 32 to 64 bits brought the opportunity to
clean up the ISA. Because one thing that people often do not
know, is that ARM ISA has probably even more legacy baggage than
x86 (ARM encoding, thumbs, thumbs2, vfp, arm4, arm5, arm6, arm7,
etc.).
It is often a problem and it happens in a lot of ISA's that
things that were good ideas for a certain process size become
real problems later on that slow down or block evolution.
Examples abound, double indirect addressing modes in m68k, branch
delay slots in MIPS and SPARC, register windows in SPARC, memory
based register in TMS9900, predicates, shifts and PC in normal
register in ARM, variable length encoding and segments in x86
etc...
More information about the Digitalmars-d
mailing list