c gcc compiler-construction mips

¿Hay una manera de usar gcc para convertir C a MIPS?



compiler-construction (5)

Debes compilar tu propia versión de gcc, que puede compilarse de forma cruzada. Por supuesto, esto no es fácil, por lo que podría buscar un enfoque diferente ... por ejemplo, this SDK.

Completé una conversión de C a MIPS para una clase y quiero compararla con el ensamblaje. He escuchado que hay una forma de configurar gcc para que pueda convertir el código C a la arquitectura MIPS en lugar de a la arquitectura x86 (los usuarios de mi computadora tienen un procesador Intel i5) e imprimen la salida.

Ejecutando el terminal en Ubuntu (que viene con gcc), ¿qué comando utilizo para configurar gcc para convertir a MIPS? ¿Hay algo que necesito instalar también?

EDIT: Déjame aclarar. Por favor lee esto. No estoy buscando qué compilador usar, o gente que dice "bien, podrías compilar de forma cruzada, pero en lugar de eso, debes usar esta otra cosa que no tiene instrucciones sobre cómo configurar".

Si vas a publicar eso, al menos refiéreme a las instrucciones. GCC vino con Ubuntu. No tengo experiencia en cómo instalar compiladores y no es fácil encontrar tutoriales en línea para otra cosa que no sea GCC. Luego está el caso de compilación cruzada que también necesito conocer. Gracias.


GCC puede producir código de ensamblaje para un gran número de arquitecturas, incluido MIPS. Pero la arquitectura de una determinada instancia de GCC se decide cuando se compila el propio GCC. El binario precompilado que encontrará en un sistema Ubuntu sabe sobre x86 (posiblemente en los modos de 32 bits y de 64 bits) pero no en MIPS.

La compilación de GCC con una arquitectura de destino distinta de la arquitectura en la que se ejecutará GCC se conoce como la preparación de una cadena de herramientas de compilación cruzada . Esto es factible pero requiere bastante lectura de documentación y paciencia; por lo general, primero debe crear un ensamblador cruzado y un reticulador (GNU binutils), luego construir el propio GCC cruzado.

Recomiendo usar buildroot . Este es un conjunto de scripts y makefiles diseñados para ayudar con la producción de una completa herramienta de compilación cruzada y utilidades. Al final del día, obtendrá un sistema operativo completo y herramientas de desarrollo para un sistema objetivo. Esto incluye el compilador cruzado que está buscando.

Otra solución bastante diferente es utilizar QEMU . Este es un emulador para varios procesadores y sistemas, incluidos los sistemas MIPS. Puede usarlo para ejecutar una máquina virtual con un procesador MIPS y, dentro de esa máquina, instalar un sistema operativo para MIPS, por ejemplo, Debian , una distribución de Linux. De esta manera, obtiene un GCC nativo (un GCC que se ejecuta en un sistema MIPS y produce un código para MIPS).

La forma QEMU podría ser un poco más simple; el uso de compilación cruzada requiere cierta comprensión de algunos detalles peludos. De cualquier manera, necesitará aproximadamente 1 GB de espacio libre en disco.


No es una cuestión de configuración, necesita una versión de GCC que se compile de forma cruzada con MIPS. Esto requiere una configuración especial de GCC y es bastante difícil de configurar (construir GCC no es para los débiles de corazón).

Recomiendo usar LCC para esto. Es mucho más fácil hacer una compilación cruzada con LCC que con GCC, y construir LCC es una cuestión de segundos en las máquinas actuales.


Puede compilar de forma cruzada el GCC para que genere un código MIPS en lugar de x86. Esa es una buena experiencia de aprendizaje.

Si desea resultados rápidos, también puede obtener un GCC precompilado con soporte MIPS. Uno es el CodeSourcery Lite Toolchain. Es gratis, viene para muchas arquitecturas (incluyendo MIPS) y están listas para usar binarios para Linux y Windows.

http://www.codesourcery.com/sgpp/lite/mips/portal/subscription?@template=lite


Necesitarías descargar la fuente en binutils y gcc-core y compilar con algo como ../configure --target=mips ... Es posible que deba elegir un objetivo MIPS específico. Entonces podrías usar mips-gcc -S .