.data : representa el segmento de datos, esto indica que a continuación se escribiran datos en el segmento de memoria, pero no instrucciones.
Dentro de este es normal ver otras indicaciones como:
- .word: indica que se reserva una palabra (4bytes) en este caso.
- .half: indica que se reserva media palabra (2bytes) en este caso.
- .byte: indica que se reserva un byte en este caso.
- .dword: indica que se reserva una doble palabra (8bytes) en este caso.
- .string: o .asciz: reservan palabras para una cadena en función de lo que esta ocupe, a tener en cuenta que una cadena de caracteres asci en risc-v termina siempre con el caracter "0" o "\n".
- .space 15 indica que se reserva bytes, generalmente están iniciados a 0 todas las casillas, pero es buena páctica no dar esto por hecho.
- .globn : declara la siguiente variable como global y por lo tanto accesible desde cualquier fichero.
se pueden almacenar más de una palabra de manera cómoda sin necesidad de poner .word para cada una de ellas separandalas por comas "," .
ej: .word: 0xfabcde10 , 0 , 1 , a
las reservas se hacen de manera alineada. es decir si tengo una palabra reservada se empieza a reservar los primeros 4 bytes para ella y si luego reservo un byte se reserva el próximo byte para el, así como si reservo otra palabra a continuación lo hará en los 4 bytes siguientes.
Se utiliza el criterio de almacenamiento little endian.
- nnnn si queremos escribir un número en decimal se escribiran los digitos normalmente.
- 0xnnnn si queremos escribir un número en hexadecimal.
- 'a' se escribe el número asociado al carácter asci a(para este caso 64 pero de manera general será un número entre 0 y 225).