almacenar instrucciones de ensamblaje de palabras en risc-v

1

Estoy realmente confundido acerca de las instrucciones de la tienda en risc-v. Cuando almaceno una palabra desde el registro a la memoria, después de que la palabra se haya copiado en el mem, ¿aparece con signo extendido o con extensión cero o quizás algo más ocurra? si está extendida, ¿la extensión comienza desde los bits inferiores o los bits superiores?

Intenté resolver este ejercicio, pero no puedo entender por qué la naranja (0x3) es la respuesta correcta.

Estos son los pasos que seguí:

  1. reg x11 obtiene el número 0x3f5 (0011 1111 0101 en binario) y se extiende a cero para llenar todos los 32 bits
  2. el número se copia de reg x11 a reg x5 y se vuelve a extender a cero para llenar 32 bits
  3. empiezo a contar bytes desde el lsb, así que después de un desplazamiento de 1 byte estoy apuntando a 0xf y cargo este byte

¿Qué hay de malo en mi solución?

gracias.

    
pregunta E. Ginzburg

1 respuesta

2
  
  1. reg x11 obtiene el número 0x3f5 (0011 1111 0101 en binario) y se extiende a cero para llenar todos los 32 bits
  2.   

Sí.

  
  1. el número se copia de reg x11 a reg x5 y se vuelve a extender a cero para llenar 32 bits
  2.   

No. El contenido de x11 se almacena (como una palabra de 4 bytes) en la ubicación de memoria señalada por x5 (con desplazamiento cero). x5 en sí no se modifica de ninguna manera.

Después de esta operación, la memoria que comienza en la dirección de bytes contenida en x5 contiene 0xF5 0x03 0x00 0x00 (almacenamiento little-endian)

  
  1. empiezo a contar bytes desde el lsb, así que después de un desplazamiento de 1 byte estoy apuntando a 0xf y cargo este byte
  2.   

No. Esta instrucción carga un byte desde la ubicación de memoria señalada por x5, con un desplazamiento de 1 byte. Por lo tanto, transfiere 0x03 (el segundo valor en la lista anterior) al registro x12 (y lo llena en cero a 32 bits).

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas