Ich verstehe nicht, wie das funktionieren soll.Warum benötigt GCC Inline-Assembler Clobbering Informationen, aber MSVC nicht
GCC Inline-Assembler ist ein Schmerz, um richtig zu werden, aber sehr spezifisch über das Markieren von Clobbering-Informationen, so dass der Compiler weiß, was Sie tun.
Die Inline-Assemblierung von Microsoft Visual C++ ist wirklich einfach zu verwenden (es scheint immer zu funktionieren), aber ich habe keine Ideen, welche Garantien oder Annahmen es über Ihren Code macht.
Versucht VC++, "automatisch zu erkennen, welche Register verfälscht sind"? Woher weiß es, wie die Register und der Stapelzeiger geändert werden? Macht es irgendwelche Annahmen? Wenn ja, wie umgehen Sie diese Annahmen?
+1, eine sehr anspruchsvolle Antwort auf OPs Follow-up-Frage :) –
# 2 war ein sehr nützlicher Kommentar, hatte ich keine Ahnung davon! Vielen Dank! :) – Mehrdad
in 1. oben heißt es: * "Die Idee ist, zu generieren und zu vermeiden Parsing" * noch scheint es mir, dass für den Compiler erhalten die Informationen über verprügelte Elemente beinhaltet Parsing sowieso, nicht wahr? Aus dem - möglicherweise unkorrekten - Eindruck, dass "Inline-Assemblierung nicht das Ziel hat, die Unabhängigkeit der Architektur zu erhöhen und plattformspezifisch einfach zu assemblieren", wäre es schön, dass es ein Wörterbuch für die vom Compiler unterstützten Informationen gibt statt Programmierern Dinge zu vergessen. Gab es seit der Frage 2012 eine gewisse Entwicklung? – humanityANDpeace