Red de conocimiento informático - Computadora portátil - ¿Cuáles son las reglas para nombrar y escribir símbolos en el ensamblaje del brazo?

¿Cuáles son las reglas para nombrar y escribir símbolos en el ensamblaje del brazo?

Símbolos especiales ---- Instrucciones correspondientes ---- Significado ---- Ejemplo

^ ---- MAP ---- Definir tabla de memoria estructurada ---- MAP 4096 La primera; la dirección es 4096

# ---- CAMPO ---- Define los datos en la tabla de memoria y la instrucción MAP----

MAP 4096

STACKSVC FIELD 256; define 256 bytes a partir de 4096 como el espacio de pila de SVC.

---- ESPACIO ---- Asigne un bloque de memoria e inicialice con "0"---- DataStruc ESPACIO 280; asigne 280 bytes de memoria e inicialice

[| ] ---- IF ELSE ENDIF ---- Determine selectivamente el código de compilación condicional de IF, ELSE y ENDIF, que se puede anidar----

Expresión lógica IF

Instrucciones o directivas

ELSE

Instrucciones o directivas

ENDIF

Además, hay símbolos:

Si hay $ antes de la variable de cadena, se compilará durante el ensamblaje.

Si hay $ delante de la variable de cadena, el compilador reemplazará la variable de cadena con el valor de la variable de cadena durante el ensamblaje, por ejemplo:

GBLS STR1

GBLS STR2

STR1 SETS "pen."

STR2 SETS "Este es un $STR1"

El resultado compilado es que el valor de STR2 es Esto es un bolígrafo.

Si $ va seguido de una variable numérica (para distinguirla de una variable de cadena), el compilador convertirá el valor de la variable numérica en una cadena hexadecimal durante el ensamblaje y luego usará la cadena hexadecimal para reemplazar. la variable numérica después de $.

Si $ va seguido de una variable lógica, el compilador reemplazará la variable lógica con su valor (T o F) en el momento del ensamblaje.

Si es necesario utilizar $ en el programa, se representa mediante $$ y el compilador no realizará sustitución de variables.

GBLS STR1

GBLS B

GBLA NUM1

NUM1 SETA 14

B SETS "CAMBIADO"

STR1 SETS "abc$B$NUM1"

El resultado de la compilación de STR1 es: abcB0000000E.

Nota: Un $ entre dos líneas de "|" vertical no significa que se realice la sustitución de variables, pero si "|" está entre comillas dobles, se realizará la sustitución de variables.

Utilice el punto "." para indicar el final del nombre de la variable.

GBLS STR1

GBLS STR2

STR1 CONFIGURA "AAA"

STR2 CONFIGURA "bbb$STR1.CCC"

El valor STR2 del resultado de la compilación es bbbAAACCC

Hay otra excepción: "" Además de expresar ESPACIO, también se puede usar en etiquetas de localización. Para conocer su significado, consulte el uso. ejemplo de la directiva ROUT:

◆ROUT

La directiva ROUT define el rango válido de etiquetas localizadas. El formato de la directiva es el siguiente: {nombre} ROUT, donde nombre define. el nombre del rango.

Cuando no se utiliza la directiva ROUT, el alcance de la etiqueta local es el párrafo en el que se encuentra el alcance de la directiva ROUT es el rango entre esta directiva ROUT y la siguiente directiva ROUT (refiriéndose; al mismo párrafo) Directiva ROUT)

Los ejemplos de aplicación de directivas son los siguientes:

rutinaA ROUT; define el rango válido de etiquetas locales, denominada rutinaA ROUT. Define el alcance válido de la etiqueta local denominada rutinaA ROUT.

3routineA; Alcance de la rutina A de la marca local 3

......

BEQ 4routineA; Marca local 4 en el rango

......

BEQ 3routineA ; Si la condición es verdadera, salta a la marca local en la rutina A rango Iq 3

......

4routineA; Posicionamiento 4 dentro del alcance de la rutina A

......

othertuff Definición; Rango válido de nuevas etiquetas locales

------------------------------------- ----------------------------------

Especificación de programación de referencia de símbolo ADS en lenguaje ensamblador ARM

Error: símbolo no definido...

Encontré el archivo fuente del ensamblado que hace referencia al símbolo y el archivo fuente del ensamblado que define el símbolo, y los verifiqué y comparé repetidamente. El símbolo no está escrito incorrectamente y, de hecho, IMPORT se utiliza para introducir el símbolo antes de citarlo. Justo cuando estaba desconcertado, de repente pensé que el símbolo EXPORTAR no estaba incluido en el archivo que define el símbolo. Este fue un error de muy bajo nivel.

En la programación en lenguaje ensamblador, es muy importante desarrollar buenos hábitos de programación y un estilo de codificación. Aquí solo hablamos de las reglas de referencia de símbolos cuando usamos ADS para la programación en lenguaje ensamblador ARM según hábitos y experiencia personales, principalmente usando diferentes métodos de referencia para símbolos de diferentes naturalezas:

(1) Definición de dirección de registro Y la definición de constantes o símbolos generales (definidos usando EQU) se puede definir en el archivo de ensamblaje según la clase. Puede utilizar INCLUDE para incluir un archivo ensamblado .s en un archivo fuente que utilice estas definiciones.

La ventaja de esto es que evita una gran cantidad de pseudodeclaraciones IMPORT y EXPORT y mejora la legibilidad del código. Además, es útil para usar múltiples definiciones de direcciones de registro idénticas o definiciones constantes en. múltiples archivos fuente En algunos casos, esto puede reducir en gran medida el tamaño del código (confirmado por la práctica del autor).

(2) Para etiquetas de dirección de segmento de código o etiquetas de dirección de entrada de función (nombres de función), use EXPORTAR en la definición del segmento de código o función; use IMPORTAR al llamar al segmento de código o función en el archivo fuente; Introducción del símbolo.

Asegúrese de que IMPORTAR y EXPORTAR se utilicen en pares; si no se utiliza EXPORTAR, IMPORTAR no tiene ningún efecto; si se utiliza EXPORTAR sin IMPORTAR, el símbolo no se puede citar.

Asegúrate de que IMPORTAR y EXPORTAR se utilicen en pares.