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

1

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

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

Ahora, el procesador realizará las siguientes operaciones 16-bits :
1. Cargue para registrar el valor R1 de la dirección 1000 (recuerde que las operaciones son 16-bits ).
2. El valor XOR de la dirección 1002 con el valor del registro R1 .
3. Guarde el resultado de XOR en la dirección 1010

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

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

    
pregunta

2 respuestas

0

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 , AND y OR solo miran los mismos bits en los dos valores. Entonces, en este caso, no importa si el procesador es little-endian, big-endian, o en qué dirección se encuentran los operandos. El resultado serán los mismos valores en las direcciones 1010 y 1011 independientemente:

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)

Es solo cuando se usan operaciones matemáticas en lugar de operaciones lógicas, como ADD , SUB y MUL , esa materia little-endian y big-endian - y en el caso de SUB , el orden de los operandos. Un ADD agrega 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 carry , lo que puede producir otro carry. Esto mueve los bits hacia arriba, por lo que el límite de bytes se vuelve importante: ¡el acarreo debe 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)
    
respondido por el John Burger
1

Tiene razón al entender el diseño "endian" ...

Figura1.DiseñodememoriadeLittle-endianybig-endian.Fuente: Wikipedia .

... y tus cálculos son correctos.

Si alguien quiere verificar, cambie la calculadora de su computadora al Modo de Programador y realice el cálculo XOR hexadecimal.

    
respondido por el Transistor

Lea otras preguntas en las etiquetas