2011-09-13 9 views
14

¿Hay alguna manera de "mover un número de byte inmediato específico en una ubicación de memoria directa? Es decir.¿Existe un código de operación x86 para mover un byte inmediato a una ubicación de memoria directa (sin usar registros)?

MOV 10h,ffffh 

para escribir el valor 16 en la dirección de memoria 65535? Si es así, ¿qué código de operación es ese, o tendría que almacenar primero una dirección de memoria en un registro?

+2

En sintaxis Intel, 'mov byte ptr [0ffffh], 10h'. En la sintaxis de AT & T, 'movb $ 0x10, 0xffff'. Consulte la documentación de su ensamblador para más detalles. –

Respuesta

13

Sí. El código de operación es C6. Debe descargar una copia de los documentos Intel ISA, que son freely available.

A su pregunta de seguimiento: la codificación completa de su ejemplo es:

c6  04  25 ff ff 00 00 10 
opcode modr/m sib  address  immediate 
+0

Gracias Stephen, sin embargo, ¿la instrucción C6 no requiere un byte r/m? Si ese es el caso, entonces la instrucción resultante tiene solo cuatro bytes de longitud, seguramente no lo suficiente como para contener una dirección de memoria completa. –

+1

@Nicholas Hill: la instrucción resultante es * no * solo de 4 bytes de longitud. –

4

Intel Manual Volume 2 Instruction Set Reference - 325383-056US September 2015 Sección 3.2 "MOV-Move " tiene una tabla que contiene:

Opcode   Instruction 
---------------- ---------------- 
C6 /0 ib   MOV r/m8, imm8 
C7 /0 iw   MOV r/m16, imm16 
C7 /0 id   MOV r/m32, imm32 
REX.W + C7 /0 io MOV r/m64, imm32 

Entonces debe saber que:

  • r/m significa registro o ubicación de memoria
  • imm medios inmediatos

Así que esas son las codificaciones que está buscando.

Más empíricamente que también podría haber simplemente probé y descompilada:

mov byte [0x1234678], 0x9A 

continuación:

as --32 -o a.o a.S 
nasm -felf32 -o a.o a.asm 

Da:

00000000 <.text>: 
    0: c6 05 78 56 34 12 9a movb $0x9a,0x12345678 

Por lo tanto concluimos que c6 es el código de operación , con ModR/M 05, e inmediatamente después.

Cuestiones relacionadas