almacenar instrucciones de ensamblaje de palabras en risc-v

Estoy realmente confundido acerca de las instrucciones de la tienda en risc-v. Cuando almaceno una palabra del registro a la memoria, después de que la palabra se copia en la memoria, ¿se extiende con signo o con cero o tal vez ocurre algo más? si se extiende, ¿la extensión comienza desde los bits inferiores o desde los bits superiores?

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

ejercicio de montaje

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 cero extendido 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é tiene de malo mi solución?

gracias.

Un byte son 8 bits, no 4.

Respuestas (1)

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

Sí.

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

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

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 con ceros a 32 bits).