Cpu instructions exposed

rikki cattermole via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Aug 28 19:01:04 PDT 2017


On 29/08/2017 2:49 AM, Cecil Ward wrote:
> I have written a few zero-overhead (fully inlining) D wrappers around 
> certain new x64 instructions as an exercise to help me learn D and get 
> used to GDC asm. I've also written D replacements for older processors. 
> They are templated functions with customised variants supporting a 
> variety of different word-widths.
> 
> 1. Would anyone find these useful? Bet I'm inventing the wheel? (But 
> still a good learning task for me.)

Sure, why not?

> 2. How best to get them reviewed for correct D-style and

Lets talk about 3.

> 3. how to package them up, expose them? They need to be usable by the 
> caller in such a was as they get fully directly inlined with no 
> subroutine calls or arg passing adaptation overhead so as to get the 
> desired full 100% performance. For example a call with a literal 
> constant argument should continue to mean an immediate operand in the 
> generated code, which happens nicely currently in my testbeds. So I 
> don't know, the user needs to see the lib fn _source_ or some equivalent 
> GDC cleverness. (Like entire thing in a .h file. Yes, I know, I know. :-) )

Dub + force -inline.
Also you will need to support ldc and dmd.

> 4. I would like to do the same for LDC, unfortunately the asm system is 
> rather different from GDC. I don't know if there is anything clever I 
> can do to try to avoid duplication of effort / totally split sources and 
> double maintenance? (Desperation? Preprocess the D sources with an 
> external tool if all else fails! Yuck. Don't have one at hand right now 
> anyway.)

Duplicate. Nothing wrong with that for such little code. Its already 
abstracted nicely out.

As long as you are using function arguments as part of you iasm, 
push/pop registers you use, it should be inlined correctly as per the 
arguments.
But I'd like to see some code before making any other remarks.

I highly suggest you hang out on IRC (#d Freenode) to help get 
interactive reviews+suggestions.


More information about the Digitalmars-d-learn mailing list