Pregunta

Estoy teniendo un montón de problemas para conseguir mi ensamblaje archivo compilado trabajando en SPIM. Básicamente quiero escribir un archivo de C ++ y, a continuación, generar un archivo .s que pueda abrir en SPIM sin error. Esto significa que el conjunto debe estar en MIPS32 ABI usando las instrucciones MIPS I (algunos MIPS II). ¿Cómo hago esto? En este momento estoy usando g ++ pero estoy teniendo grandes errores cuando intento ot ejecutar el archivo en SPIM. Estoy trabajando en Mac OS X 10.6.3 y estoy compilar de forma remota en una máquina Linux. ¿Hay un compilador especial que pueda usar que hará más fácil para mí?

¿Fue útil?

Solución

Dar el compilador opción -S, se generará el código ensamblador. A continuación, tendrá que modificar el código para que SPIM acepta.

También querrá g++ -S -fno-delayed-branch si se habilita la optimización como -O1 o -Og de código más legible. Por lo general, SPIM está configurado para simular un MIPS sin ranuras rama de retardo, pero gcc asumirá que la instrucción después de una rama se ejecuta incluso si se toma. -fno-delayed-branch consigue gcc para llenar las ranuras de la rama de retardo con nop.

Otra opción útil es -fverbose-asm tener gcc comentarios add con el nombre de la variable C de cada operando.

Usted querrá evitar el uso de bibliotecas de C ++ como std::vector que compilación de una gran cantidad de código extra frente a las matrices locales, especialmente sin optimización, a menos que realmente necesita esas características.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top