Integrado: pseudooperación de definición de símbolo ARM detallada

Pseudooperaciones, macroinstrucciones y pseudoinstrucciones del lenguaje ensamblador ARM

Las declaraciones en los programas fuente en lenguaje ensamblador ARM generalmente se componen de instrucciones, pseudooperaciones, macroinstrucciones y pseudoinstrucciones. Las pseudooperaciones
son algunos mnemotécnicos de instrucciones especiales en los programas en lenguaje ensamblador ARM. Su función es principalmente preparar para la finalización del ensamblado. programas. , que es procesado por el ensamblador cuando se ensambla el programa fuente, en lugar de ser ejecutado por la máquina mientras la computadora está funcionando.

Una instrucción de macro es un código de programa independiente que se puede insertar en un programa fuente y se define mediante una pseudooperación. Las macros deben definirse previamente antes de ser utilizadas. Las macros pueden llamarse entre sí o llamarse recursivamente a sí mismas. Use la macro escribiendo directamente el nombre de la macro y configure los parámetros de entrada correspondientes de acuerdo con el formato del comando de macro. La definición de la macro en sí misma no genera código, pero inserta el cuerpo de la macro en el programa fuente cuando lo llama.

Las pseudoinstrucciones también son mnemotecnias de instrucciones especiales en los programas de lenguaje ensamblador ARM y no son ejecutadas por la máquina durante la operación del procesador. Serán reemplazadas por instrucciones de máquina apropiadas en ARM o instrucciones Thumb durante el ensamblado para lograr operaciones de instrucción reales.

Introducción al entorno de desarrollo integrado IDE con dos modos de compilación

Entorno de desarrollo ADS/SDT IDE

Fue desarrollado por ARM, usando el compilador de CodeWarrior;

Entorno de desarrollo IDE integrado con herramientas de desarrollo GNU

Consiste en el ensamblador GNU as, el compilador cruzado gcc y el enlazador ld.

Pseudooperaciones y macroinstrucciones ARM en el entorno de compilación ADS

Las pseudooperaciones en el entorno de compilación ADS son las siguientes:

  • Símbolo Definición pseudo-operación
  • Pseudooperaciones de definición de datos
  • Pseudooperaciones de control de montaje
  • Cuadro Descripción pseudo-operación
  • Pseudooperación de informes de información (Reporting)
  • Otras pseudooperaciones (varias)

definición de símbolo pseudo-op

  1. Directivas de definición de variables globales GBLA, GBLL, GBLS
  2. Directivas de definición de variables locales LCLA, LCLL, LCLS
  3. Directivas de asignación de variables SETA, SETL, SETS
  4. Directiva de definición de lista de registros RLIST

GBLA, GBLL y GBLS

Las pseudooperaciones GBLA, GBLL y GBLS se utilizan para declarar variables globales en un programa ARM e inicializarlas de forma predeterminada.

La pseudooperación GBLA declara una variable aritmética global y la inicializa a 0

La pseudooperación GBLL declara una variable lógica global y la inicializa a {FALSE}

La pseudooperación GBLS declara una variable de cadena global y la inicializa en la cadena vacía ""

formato gramatical

<GBLX>  Variable

Entre ellos:
<GBLX>es una de las tres pseudooperaciones de GBLA, GBLL o GBLS; Variable es el nombre de la variable global. Debe ser única dentro de su alcance, es decir, el mismo nombre de variable solo puede aparecer una vez dentro de su alcance.

Ejemplo de uso

GBLA  A1  ;定义一个全局的数值变量,变量名为A1
 A1    SETA  0x0F ;将该变量赋值为0x0F
            
GBLL  A2   ;定义一个全局的逻辑变量,变量名为A2
 A2    SETL  {TRUE} ;将该变量赋值为真
        
GBLS  A3 ;定义一个全局的字符串变量,变量名为A3
 A3    SETS “Testing”  ;将该变量赋值为“Testing”

LCLA, LCLL y LCLS

Las pseudooperaciones LCLA, LCLL y LCLS se utilizan para declarar variables locales en un programa ARM e inicializarlas de forma predeterminada.

El pseudooperador LCLA declara una variable aritmética local y la inicializa a cero.

El pseudo-op LCLL declara una variable lógica local y la inicializa a {FALSE}

El pseudo-op LCLS declara una variable de cadena local y la inicializa en la cadena vacía ""

formato gramatical

<LCLX>  Variable

en:

<LCLX>Es una de las 3 pseudooperaciones de LCLA, LCLL o LCLS; Variable es el nombre de una variable local. Debe ser única dentro de su alcance, es decir, el mismo nombre de variable solo puede aparecer una vez dentro de su alcance.

Ejemplo de uso

  LCLA   Test4 ;声明一个局部的数值变量,变量名为Test4
  Test4  SETA  0xaa  ;将该变量赋值为0xaa

  LCLL   Test5     ;声明一个局部的逻辑变量,变量名为Test5
  Test5  SETL {TRUE} ;将该变量赋值为真

  LCLS   Test6  ;定义一个局部的字符串变量,变量名为Test6
  Test6  SETS  “Testing” ;将该变量赋值为“Testing”

SETA, SETL y CONJUNTOS

Las pseudooperaciones SETA, SETL y SETS se utilizan para asignar valores a variables globales o locales en un programa ARM.

La pseudooperación SETA asigna un valor a una variable aritmética global o local

La pseudooperación SETL asigna un valor a una variable lógica global o local

La pseudooperación SETS asigna un valor a una variable de cadena local o global

formato gramatical

<SETX>  Variable  expr

en:

<SETX>Es una de las tres pseudooperaciones de SETA, SETL o SETS; Variable es el nombre de una variable definida mediante GBLA, GBLL, GBLS, LCLA, LCLL o LCLS, y debe ser única dentro de su alcance; expr es una expresión, es decir, el nombre asignado al valor de la variable.

Directiva de definición de lista de registros RLIST

Formato: nombre RLIST {lista de registro de propósito general}

Función: se utiliza para definir un nombre para una lista de registros de propósito general,

 reglist RLIST {R0-R3, R8, R12}
		…
	STMFD	SP!, reglist			
; 将列表reglist存储到堆栈中
		…
	LDMIA	R4, reglist			
; 将列表reglist加载到R4中

referencias:

Meng Xianglian. Tutorial de aplicación y principios de sistemas integrados (segunda edición) [M]. Pekín: Prensa de la Universidad de Tsinghua, 2017.

Supongo que te gusta

Origin blog.csdn.net/m0_52316372/article/details/128466131
Recomendado
Clasificación