On 13 December 2013 13:38, Manu <turkey...@gmail.com> wrote: > On 13 December 2013 06:08, H. S. Teoh <hst...@quickfur.ath.cx> wrote: > >> On Thu, Dec 12, 2013 at 08:57:42PM +0100, Max Samukha wrote: >> > On Thursday, 12 December 2013 at 17:56:12 UTC, Walter Bright wrote: >> > >> > >11. inline assembler being a part of the language rather than an >> > >extension that is in a markedly different format for every >> > >compiler >> > >> > Ahem. If we admit that x86 is not the only ISA in exsistence, then >> > what is (under)specified here http://dlang.org/iasm.html is a >> > platform-specific extension. >> >> I've always wondered about that. What is D supposed to do with asm >> blocks when compiling for a CPU that *isn't* x86?? What *should* a >> conforming compiler do? Translate x86 asm into the target CPU's >> instructions? Abort compilation? None of those options sound >> particularly appealing to me. >> > > It occurs to me that a little sugar would be nice, rather than: > > version(x86) > { > asm > { > ... > } > } > else version(ARM) > { > asm > { > ... > } > } > > Which appears basically everywhere an asm block does. 'asm' could > optionally receive an architecture as argument, and lower to the version > wrapper: > > asm(x86) > { > ... > } > else asm(ARM) > { > ... > } > > (The 'else's in those examples seem unnecessary) >
The 'else' is useful: asm(x86) { ... } else asm(ARM) { ... } else { static assert("Unsupported architecture!"); // or a fallback implementation }