tutorial smart remix español curso aprender assembly x86 offset x86-16

assembly - smart - Regla de cálculo de desplazamiento de conjunto



solidity español (1)

La "regla de internet" es correcta. Puede tener 1 registro base ( bp o bx ) y 1 registro de índice ( si o di ). No puede tener bp + bx o si + di al mismo tiempo. Ver la Tabla 2-1. Formularios de direccionamiento de 16 bits con el Byte ModR / M en la referencia del conjunto de instrucciones de Intel

Sin embargo, el libro de su curso es correcto, ya que cualquier parte es opcional, pero se requiere al menos una, por lo que no necesita una base o un índice o un desplazamiento. Todos estos son válidos: [const] , [bx] , [si] , [bx + si] , [bp + di + const] . La lista completa está en el manual que he vinculado anteriormente.

Entonces ... la regla del cálculo de compensación indica en mi libro de texto que:

offset = [bp] + [bx] + [di|si] + CONST (any part is optional, but atleast one is required)

Pero al leer en Internet encontré la regla como:

offset = [bp|bx] + [di|si] + CONST

¿Cuál es? ¿Y por qué?

(En mi opinión, el primero también debería ser válido ya que bx podría contener un valor arbitrario como (1..F), pero tiendo a creer que estoy equivocado y que debe haber un BX o BP)