Ieri ho appreso che l'assemblaggio in linea (con la parola chiave __asm) non è supportato in Microsoft Visual C++ durante la compilazione per obiettivi AMD64 e Itanium.Perché MSVC non supporta l'assemblaggio in linea per obiettivi AMD64 e Itanium?
È corretto? E se sì, qualcuno sa perché non supporterebbe l'assemblaggio in linea per quegli obiettivi? Sembra una funzionalità piuttosto grande da far cadere ...
Il compilatore C genera ASM come intermedio, non c'è nulla che lo renda "difficile" per consentire l'ASM in linea su AMD64. Le specifiche della piattaforma sono l'unico motivo per cui l'ASM in linea non esiste per le destinazioni x86_64 in diversi compilatori che lo supportano per x86. –
@MarkKCowan: Hai * visto * l'ASM in linea di MSVC? Comporta un sacco di cose da fare, cosa significa; puoi liberamente mescolare le variabili C/C++ con il testo del codice assembly, quindi il compilatore deve analizzare e (su un certo livello) analizzare tutto il codice, non come il modo GCC in cui il codice assembly è specificato in uno stile che richiama printf le stringhe di formato e le descrizioni esplicite degli input, degli output e dei registri clobbered evitano qualsiasi necessità per il compilatore di tentare di analizzare l'assembly. Onestamente, preferisco l'approccio di GCC, in quanto comporta una minore indiscussione del compilatore. – SamB
@SamB sì, come inline assembly in Delphi. Vorrei solo che GCC non usasse la sintassi AT & T :( –