Estoy intentando crear un caché simple para usar en la simulación con el diseño de mi procesador.
Quiero rellenar el caché con instrucciones que están almacenadas en un archivo, .bin o .txt.
El archivo no tiene más de 1023 líneas, y cada línea tiene el siguiente formato:
addr[tab]instruction
Adr es la dirección de la instrucción, y la instrucción es el código de la instrucción, y [tab] es una pestaña (espacio entre el addr y la instrucción).
Aquí está el problema:
Addr se escribe como un valor hexadecimal, tiene 32 bits y la instrucción se escribe como un valor binario y también tiene 32 bits. Así que una línea parece, por ejemplo, esta
0000000A[tab]00001000000100001110000000000011
Mi idea fue crear una matriz de vectores lógicos estándar y cada línea era un vector lógico estándar donde elem (63 a 32) sería la dirección y elem (31 a 0) sería el código de instrucción.
¿Cómo leo cada línea y al mismo tiempo convierto el valor hexadecimal en binario, ignoro la pestaña, leo las instrucciones y almaceno todo en un vector lógico estándar?
Gracias de antemano por tu ayuda.
EDITAR:
Algo como este trabajo:
while not endfile(load_file) loop
readline(load_file, rdline);
hread(rdline, address);
read(rdline, data);
memory(index) := data;
index := index + 1;
end loop;
Mi pregunta es: ¿mueve el cursor el cursor al leer la línea? Además, ¿cómo voy a omitir el carácter de la pestaña?