I try to understand the system behind the target triple of clang - but I don’t get it. I used clang to compile the same code with two different targets:
–target=x86_64-pc-windows-msvc and –target=x86_64-pc-windows-elf.
I let the dragon compile my code and wished for assembly output. The dragon did fine but the output confused me.
When I looked into the functions I discovered strange difference. For example:
msvc target generated:
movq %rdx, %rax
but in elf the same line is:
movq %rcx, %rax
Why is there (and in other places) such difference? The target is still windows, but the elf code is breaking the windows __thiscall calling convention. I expected that both output are compatible to windows.
Is the dragon wrong, or is it me?
Als GmbH eingetragen im Handelsregister Bad Homburg v.d.H. HRB 9816, USt.ID-Nr. DE 114 165 789
Geschäftsführer: Dr. Hiroshi Nakamura, Dr. Robert Plank, Markus Bode, Heiko Lampert, Hiroshi Kawamura, Takashi Nagano, Takeshi Fukushima.