es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo utilizo la función ADDS en código de ensamblador?

Estoy intentando aprender lenguaje ensamblador y estoy tratando de usar la función ADDS para sumar números de los primeros 3 registros en el registro 0.

Hasta ahora tengo esto:

.global _start
_start:
MOV R1, #5
MOV R2, #6
MOV R3, #7
ADDS R4, R1, R2
ADDS R0, R4, R3
SWI 0

Obtengo el error:

ld: add.s: formato de archivo no reconocido; tratando como guion de enlace

ld:add.s:1: error de sintaxis

No sé qué es un guión de enlace y por qué está tratando mi código como tal, acabo de ejecutar otro código ensamblador solo con las funciones MOV y funcionó bien. ¿Es algo con la forma en que estoy escribiendo las funciones ADDS tal vez? ¿O no estoy iniciando mi archivo correctamente? Lo estoy ejecutando en mi terminal con

as -o add.o add.s

para ensamblarlo, lo que funciona perfectamente, pero cuando intento vincularlo con

ld -o add.o add.s

arroja el error. Cualquier ayuda sería apreciada. Si hace alguna diferencia, el archivo se encuentra en mi Raspberry Pi. ¡Gracias!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Solución

    El problema parece estar en la forma en que estás vinculando el archivo objeto. En lugar de ejecutar

    ld -o add.o add.s
    

    intenta ejecutar

    ld -o add add.o
    

    Esto vinculará el archivo objeto add.o y creará un archivo ejecutable llamado add.

    Además, asegúrate de guardar tu código de ensamblador con la extensión de archivo .s, ya que esa es la convención para los archivos de código de ensamblador.

    Una vez que tengas tu archivo ejecutable, puedes ejecutarlo con

    ./add
    

    o

    ./add.o
    

    Ten en cuenta que es posible que necesites hacer que el archivo sea ejecutable primero ejecutando

    chmod +x add
    

    ¡Espero que esta solución te ayude a resolver el problema! Hazme saber si tienes alguna otra pregunta.

Comments are closed.