D Source: import core.stdc.stdio; void main() { ulong stuff; asm { xor RDI, RDI; mov DIL, 1; mov stuff, RDI; } printf("%lld\n", stuff); } Output: 0 obj2asm disassembly of main(): push RBP mov RBP,RSP sub RSP,010h mov qword ptr -8[RBP],0 xor RDI,RDI mov BH,1 mov -8[RBP],RDI mov RSI,-8[RBP] mov RDI,offset FLAT:.rodata@64 xor EAX,EAX call printf@PC32 xor EAX,EAX mov RSP,RBP pop RBP ret The opcode for BH is being generated when the assembly language code says DIL. Similarly, DH is generated when SIL is in the source code.
https://github.com/D-Programming-Language/dmd/pull/1916
*** Issue 9972 has been marked as a duplicate of this issue. ***
Commits pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/c275b372c3ec3cc58a54a4a7da66736b53932eca fix Issue 9965 - Wrong Assembly For DIL, SIL Registers https://github.com/D-Programming-Language/dmd/commit/bddba0574f25ff06917f6ca3b380c2c515e3963b Merge pull request #1916 from WalterBright/fix9965 fix Issue 9965 - Wrong Assembly For DIL, SIL Registers
Commit pushed to dmd-1.x at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/0f741f4665959ec5dc1826d1aa3169e173edb559 Merge pull request #1916 from WalterBright/fix9965 fix Issue 9965 - Wrong Assembly For DIL, SIL Registers