No entiendo cómo se supone que funciona.¿Por qué el ensamblador en línea de GCC requiere información de trituración, pero MSVC no lo hace?
El ensamblador en línea de GCC es difícil de conseguir, pero muy específico sobre cómo marcar la información de trituración, para que el compilador sepa lo que está haciendo.
El Aserver en línea de Microsoft Visual C++ es realmente fácil de usar (siempre parece que solo funciona), pero no tengo idea de qué tipo de garantías o suposiciones hace sobre su código.
¿Trata VC++ de "autodetectar" qué registradores son destruidos? ¿Cómo sabe cómo se cambiarán los registros y el puntero de la pila? ¿Hace alguna suposición? Si es así, ¿cómo se solucionan esas suposiciones?
+1, una respuesta muy sofisticada a la pregunta de seguimiento de OP :) –
# 2 fue un comentario muy útil, ¡no tenía ni idea de eso! ¡Gracias! :) – Mehrdad
en 1. arriba dice: * "La idea es generar y evitar el análisis" *, sin embargo, me parece que para el compilador recibir la información sobre los objetos cariados implica analizar de todos modos, ¿no? Partiendo de la impresión "posiblemente incorrecta" de que "el ensamblaje en línea podría no tener el objetivo de aumentar la independencia de la arquitectura, y será bastante fácil de ensamblar según la plataforma específica", sería estupendo que hubiera un diccionario para proporcionar la información eliminada del compilador. , en cambio, para permitir que los programadores olviden cosas. ¿Ha habido algún desarrollo desde que se hizo la pregunta en 2012? – humanityANDpeace