consideraciones sobre el procesador little endian y las operaciones en los registros

El procesador es little-endian.
En las siguientes direcciones tenemos los siguientes valores (formato hexadecimal):

1000: FA 
1001: 46 
1002: 26
1003: C3

Ahora, el procesador realizará las siguientes 16-bitsoperaciones:
1. Cargar para registrar R1el valor de la dirección 1000(recuerde que las operaciones son 16-bits).
2. Valor XOR de dirección 1002con valor de registro R1.
3. Guardar el resultado de XOR en la dirección1010

Les muestro, cómo entiendo lo que hace el procesador:
1. Debido al hecho de que el procesador es little-endian, se carga al R1valor: 46 FA.
2. xor con valor de dirección 1002con R1es:
XOR(C3 26, 46 FA)=85 DC
3. Ahora, en direcciones 1010y 1011tenemos:
1010:DC
1011:85

Dime por favor, ¿estoy bien? Si entiendo correctamente este problema?

Sí, lo tienes. Solo recuerde que little-endian significa que la dirección de memoria apunta al byte menos significativo (el extremo pequeño) de los valores de varios bytes.

Respuestas (2)

Lo tienes completamente correcto, y la respuesta de Transistor es buena. Sin embargo, aquí hay información adicional:

Tenga en cuenta que las operaciones lógicas como XOR, ANDy ORsolo buscan los mismos bits en los dos valores. Entonces, en este caso, no importa si el procesador es little-endian, big-endian o de qué manera están los operandos. El resultado serán los mismos valores en las direcciones 1010e 1011independientemente:

Little Endian:
C326 xor 46FA = 85DC (stored as DC 85)
46FA xor C326 = 85DC (stored as DC 85)
Big Endian:
26C3 xor FA46 = DC85 (stored as DC 85)
FA46 xor 26C3 = DC85 (stored at DC 85)

Solo cuando utiliza operaciones matemáticas en lugar de operaciones lógicas, como ADD, SUBy MUL, importan little-endian y big-endian, y en el caso de SUB, el orden de los operandos. An ADDsuma los bits más bajos de las dos palabras, lo que puede producir un acarreo. Luego agrega los siguientes bits más bajos de las dos palabras más cualquier acarreo , lo que puede producir otro acarreo. Esto mueve los bits hacia arriba, por lo que el límite del byte se vuelve importante: ¡el acarreo tiene que moverse a través de él!

Little Endian:
C326 + 46FA = 0A20 (stored as 20 0A)
46FA + C326 = 0A20 (stored as 20 0A)
Big Endian:
26C3 + FA46 = 2109 (stored as 21 09)
FA46 + 26C3 = 2109 (stored as 21 09)

Little Endian:
C326 - 46FA = 7C2C (stored as 2C 7C)
46FA - C326 = 83D4 (stored as D4 83)
Big Endian:
26C3 - FA46 = 2C5F (stored as 2C 5F)
FA46 - 26C3 = D383 (stored as D3 83)
¡muchas gracias! Sin embargo, tengo otra pregunta: (suponiendo que el procesador littler-endian, 16las operaciones de bits, el valor bajo la dirección de la memoria 1000:5D, 1001:AF) Luego, el procesador carga el valor de la dirección 1000en el registro R1. Entonces el valor de R1es AF 5D. De acuerdo ?
Sí. Eso es 100% correcto.
Entonces, durante la carga del valor de la memoria al registro, el procesador little-endian invierte los bytes. ¡Muchas gracias!

Tiene razón en su comprensión del diseño "endian" ...

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Figura 1. Diseño de memoria little-endian y big-endian. Fuente: Wikipedia .

... y tus cálculos son correctos.

Si alguien quiere verificar, cambie la calculadora de su computadora al modo de programador y haga el cálculo XOR hexadecimal.

En general, ¿el razonamiento está bien?
Se ve bien. Le recomiendo que anule la aceptación durante un día más o menos para alentar otras respuestas. No espero que nadie nos contradiga, pero alguien puede tener un consejo o un punto de vista diferente que sea útil de alguna otra manera.
ok, no acepto.
¡Maldito! Tienes una mejor respuesta. ;^) No hay problema.