Herramientas de usuario

Herramientas del sitio


arm_intro_instrucc

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
arm_intro_instrucc [2020/05/13 02:23] – u andrewarm_intro_instrucc [2020/05/13 03:25] (actual) – editor externo 127.0.0.1
Línea 1: Línea 1:
-===== Introducción a las instrucciones ARM =====+===== Formato de las instrucciones de ensamblador ARM =====
  
-Vamos a  introducir brevemente el conjunto de instrucciones de ARM y su uso general. Es importante para nosotros entender cómo funciona el lenguaje ensamblador, cómo se conectan las instrucciones y parámetros entre sí y qué se puede lograr al combinar instrucciones y parámetros.+Vamos a  introducir brevemente el formato de las instrucciones del lenguaje ensamblador ARM y su uso general. Es importante para nosotros entender cómo funciona el lenguaje ensamblador, cómo se conectan las instrucciones y parámetros entre sí y qué se puede lograr al combinar instrucciones y parámetros.
  
 Como hemos mencionado, el lenguaje ensamblador se compone de instrucciones, que son los bloques de construcción principales. Las instrucciones ARM generalmente van seguidas de uno o dos operandos y generalmente usan la siguiente plantilla: Como hemos mencionado, el lenguaje ensamblador se compone de instrucciones, que son los bloques de construcción principales. Las instrucciones ARM generalmente van seguidas de uno o dos operandos y generalmente usan la siguiente plantilla:
Línea 12: Línea 12:
  
  
-MNEMONICO        - Nombre corto de la instrucción (mnemonic)+**MNEMONICO**        - Nombre corto de la instrucción (mnemonic)
  
-{S}              - Un sufijo opcional. Si se agrega S al final del Mnemonico, el registro CPSR de flags es actualizado en base a los resultados de una operación+**{S}**              - Un sufijo opcional. Si se agrega S al final del Mnemonico, el registro CPSR de flags es actualizado en base a los resultados de una operación
  
-{condition}      - Condición que debe suceder para que se ejecute una instrucción+**{condition}**      - Condición que debe suceder para que se ejecute una instrucción
  
-{Rd}             - Registro destino para almacenar los resultados de una instrucción+**{Rd}**             - Registro destino para almacenar los resultados de una instrucción
  
-Operand1         - Primer operando. Puede ser un valor inmediato ó un registro +**Operand1**         - Primer operando. Puede ser un valor inmediato ó un registro 
  
-Operand2         - Segundo operando (flexible). Puede ser un valor inmediato ó un registro ó un registro con shift, ver ejemplo a continuación+**Operand2**         - Segundo operando (flexible). Puede ser un valor inmediato ó un registro ó un registro con shift, ver ejemplo a continuación
  
  
-Mientras que los campos MNEMONICO, S, Rd y Operand1 son sencillos, la **condición** y los campos **Operand2** requieren un poco más de aclaración. El campo de condición está estrechamente relacionado con el valor del registro CPSR, o para ser precisos, valores de bits específicos dentro del registro. El operando2 se llama operando flexible, porque podemos usarlo de varias formas: como valor inmediato (con un conjunto limitado de valores), registro o registro con shift. Por ejemplo, podemos usar estas expresiones como Operand2:+Mientras que los campos MNEMONICO, S, Rd y Operand1 son sencillos, la **condición** y los campos **Operand2** requieren un poco más de aclaración. 
  
-     #123                    - Immediate value (with limited set of values).  +El campo de condición está estrechamente relacionado con el valor del registro CPSR, o para ser precisos, valores de bits específicos dentro del registro. El siguiente ejemplo muestra como se incluye el campo condición en una instrucción:  
-     Rx                      - Register x (like R1, R2, R3 ...) + 
-     Rx, ASR n               Register with arithmetic shift right by n bits (1 = n = 32) +     MOVLE R0, #5             - Mueve el número 5 al registro R0  
-     Rx, LSL n               Register with logical shift left by n bits (0 = n = 31+                                únicamente si la condición LE (Less than or Equal - menor o igual que) es satisfecha 
-     Rx, LSR n               - Register x with logical shift right by n bits (1 = n = 32+ 
-     Rx, ROR n               - Register x with rotate right by n bits (1 = n = 31) + 
-     Rx, RRX                 - Register x with rotate right by one bit, with extend+El operando2 se llama operando flexible, porque podemos usarlo de varias formas: como valor inmediato (con un conjunto limitado de valores), registro o registro con shift. Por ejemplo, podemos usar estas expresiones como Operand2: 
 + 
 +     #123                    - Valor inmediato (limitado a un rango dependiendo del procesador).  
 +     Rx                      - Registro x (por ejemplo R1, R2, R3 ...) 
 +     Rx, ASR n               Registro con shift aritmético a derecha de n bits (1 = n = 32) 
 +     Rx, LSL n               Registro con shift lógico a izquierda de n bits (0 = n = 31) 
 +     Rx, ROR n               - Register x con rotación a derecha de n bits (1 = n = 31)
            
-Como un ejemplo rápido de cómo se ven los diferentes tipos de instrucciones, veamos la siguiente lista.+Como un ejemplo completo de cómo se ven las instrucciones con el operando 2, veamos la siguiente lista
 + 
 +     ADD   R0, R1, R2         - Suma los contenidos de R1 (Operando 1) and R2 (Operando 2 en la forma de un registro) y   
 +                                almacena el resultado en R0 (Rd) 
 +     ADD   R0, R1, #2         - Suma el contenido de R1 (Operando 1) y el valor 2 (Operando 2 en la forma de un   
 +                                valor inmediato) y almacena el resultado en R0 (Rd)
  
-     ADD   R0, R1, R2         Adds contents of R1 (Operand1) and R2 (Operand2 in form of register) and   +     MOV   R0, R1, LSL #1     Mueve a R0 (Rd) el contenido de R1 (Operando en la forma de registro con shift lógico  
-                                stores the result into R0 (Rd) +                                a izquierdashifteado izquierda un bit. Por ejemplo si R1 tiene el valor 2, este es shifteado  
-     ADD   R0, R1, #2         - Adds contents of R1 (Operand1) and the value (Operand2 in a form of an  +                                a izquierda un bit y se convierte en 4. El luego movido a R0.
-                                immediate valueand stores the result into R0 (Rd) +
-     MOVLE R0, #5             - Moves number 5 (Operand2, because the compiler treats it as MOVLE R0, R0, #5)  +
-                                to R0 (Rd) ONLY if the condition LE (Less Than or Equal) is satisfied +
-     MOV   R0, R1, LSL #1     - Moves the contents of R1 (Operand2 in form of register with logical shift  +
-                                left) shifted left by one bit to R0 (Rd)So if R1 had value 2, it gets shifted  +
-                                left by one bit and becomes 4. 4 is then moved to R0.+
                                                                
  
 [[oc_raspi0|Volver]]                                [[oc_raspi0|Volver]]                               
  
× iphelper toolbox

you see this when javscript or css is not working correct

Untested
IP Address:
First usable:
Subnet:
Last usable:
CIDR:
Amount of usable:
Network address:
Reverse address:
Broadcast address:

arm_intro_instrucc.1589336633.txt.gz · Última modificación: 2020/05/13 02:23 (editor externo)