Herramientas de usuario

Herramientas del sitio


arm_inst_mov

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_inst_mov [2020/05/15 05:04] andrewarm_inst_mov [2020/05/27 03:04] (actual) – editor externo 127.0.0.1
Línea 2: Línea 2:
 ===== Instrucciones de movimientos de datos ===== ===== Instrucciones de movimientos de datos =====
  
-==== MOV (inmediato)====+==== mov ====
  
  
-La instrucción MOV (inmediato) escribe un valor inmediato <const> en el registro destino <Rd>+La instrucción **mov (inmediato)** escribe un valor inmediato <const> en el registro destino <Rd>
  
 **MOVS <Rd>, #<const>** **MOVS <Rd>, #<const>**
Línea 37: Línea 37:
      MOVS  r0, r3      // Copia en el registro r0 el contenido del registro r3 y actualiza cpsr      MOVS  r0, r3      // Copia en el registro r0 el contenido del registro r3 y actualiza cpsr
            
 +==== ldr y str ====
  
 +En la arquitectura ARM los accesos a memoria se hacen mediante instrucciones específicas ldr y str (luego veremos las variantes ldm, stm y las preprocesadas push y pop). El resto de instrucciones toman operandos desde registros o valores inmediatos, sin excepciones. En este caso la arquitectura nos fuerza a que trabajemos de
 +un modo determinado: primero cargamos los registros desde memoria, luego procesamos el valor de estos registros con el amplio abanico de instrucciones del ARM, para finalmente volcar los resultados desde registros a memoria.
 +Existen otras arquitecturas como la Intel x86, donde las instrucciones de procesado nos permiten leer o escribir directamente de memoria. Ningún método es mejor que otro, todo es cuestión de diseño. Normalmente se opta por direccionamiento a memoria en instrucciones de procesado en arquitecturas con un número reducido de registros, donde se emplea la memoria como almacén temporal.
 +
 +En nuestro caso disponemos de suficientes registros, por lo que podemos hacer el procesamiento sin necesidad de interactuar con la memoria, lo que por otro lado también es más rápido.
  
 ==== PUSH y POP ==== ==== PUSH y POP ====
Línea 62: Línea 68:
  
  
-[[arquitectura_arm:componentes_fisicos._registros_flags_pila._direcciones_de_memoria_logicas_y_fisicas#El Stack o pila y las instrucciones ldm y stm| +[[arquitectura_arm:componentes_fisicos._registros_flags_pila._direcciones_de_memoria_logicas_y_fisicas#El Stack o Pila| Más info sobre el funcionamiento del stack, click acá]]
-Más info sobre el funcionamiento del stack, click acá]]+
  
  
Línea 76: Línea 81:
  
  
 +***Observación***: Tenemos las instrucciones stm y ldm que son mucho más potentes que las instrucciones push y pop. El ensamblador de forma transparente traducirá a stm y ldm las instrucciones push y pop.
 +
 +Aunque no usemos las instrucciones stm y ldm, les dejamos como es la sintaxis:
  
 +     ldm{ modo_direc }{ cond } rn {!} , lista_reg
 +     stm{ modo_direc }{ cond } rn {!} , lista_reg
 +   
  
  
× 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_inst_mov.1589519081.txt.gz · Última modificación: 2020/05/15 05:04 (editor externo)