¿Hay un ensamblador que no sea de gas para AVR para Linux? [cerrado]

-3

Necesito hacer un proyecto completo en código crítico en su mayoría de tiempo. Usar el ensamblaje parece una buena idea. He visto bastantes ejemplos de archivos de ensamblaje y similares que tienen una sensación de "Intel". Sé que hay un ensamblador de gas utilizado por gcc para AVR, pero es un estilo "AT & T" que siempre he odiado (principalmente porque no está diseñado para escritura humana).

De todos modos, aparentemente el ensamblador que usa la mayoría de las personas se llama avrasm2.exe . Un problema con eso: uso Linux, especialmente cuando trabajo con proyectos de bajo nivel. He oído hablar de una solución al uso de Wine para ejecutar avrasm2, pero eso suena simplemente horrible.

¿Existe un ensamblador AVR de código abierto y gratuito que sea similar a avrasm2 disponible para Linux?

    
pregunta Earlz

1 respuesta

3

Por lo tanto, necesito hacer un proyecto completo en código crítico en su mayoría en el tiempo. Por lo tanto, usar el ensamblaje parece una buena idea.

Esa es una proposición falsa. ¿Está diciendo que no hay una sola secuencia de instrucciones en el código que se ejecuta solo una vez? Si el código pasa el 90% de su tiempo en el 10% del código, entonces la mayor parte del beneficio de velocidad al escribirlo en lenguaje ensamblador será el que se gastó en esas líneas de código del 10%. Reescribir el 90% restante solo traerá rendimientos decrecientes.

Ahora lo anterior se aplica a velocidad . El tamaño del código no sigue la regla 90/10: un programa gasta el 100% de su tamaño en el 100% del código. Una palabra guardada en cualquier lugar a lo largo de la longitud del programa hace que sea una palabra más corta. La mejor manera de justificar la codificación de todo en el ensamblaje es que tenga que ser lo más pequeño posible. Pero eso puede impedir que sea lo más rápido posible. Por ejemplo, no puede desenrollar los bucles si el código debe ser lo más pequeño posible. O funciones de relleno u otros objetivos de rama para alinearlos con líneas de caché.

La conversión a un estilo diferente de lenguaje ensamblador es trivial. No es nada como, digamos, traducir un programa de Haskell a C. No hay semántica involucrada, ni siquiera una sintaxis profunda. Es transliteración , no traducción , así que supéralo. La sintaxis del ensamblador GNU es perfectamente utilizable para la codificación humana y lo bueno es que brinda cierto tipo de coherencia en diferentes arquitecturas, que apreciará si pasa de ARM a MIPS, a SPARC, a ... De todos modos, ¿por qué? ¿Esperas sintaxis de Intel para una CPU que no es Intel x86?

Rant: ¿Sintaxis de Intel? Vamos, tiene una palabrería insípida como DWORD PTR que puede condensarse en un sufijo de una letra. La sintaxis x86 de Intel es la COBOL de la programación en lenguaje ensamblador.

    
respondido por el Kaz

Lea otras preguntas en las etiquetas