IIC2343 / Syllabus-2023-2

Repositorio del semestre 2023-2 del curso Arquitectura de Computadores del DCC-UC.
37 stars 1 forks source link

Proyecto Etapa 2: Bytearrays en Assembler #62

Open Monti7475 opened 1 year ago

Monti7475 commented 1 year ago

Como funciona el bytearray en el assembler? entiendo que los bytes van de 8 en 8, pero las instrucciones de la ROM tienen 36 bits, no 32/40 se trunca? O tiene que ver con la manera en que se construye en el ejemplo??

frvalenzuela commented 1 year ago

Hola @Monti7475 !

Efectivamente la ROM tiene 36 bits, pero al momento de trabajar en python, se espera que lo que se pase a bytearray sea una lista con elementos tipo int . Estos pueden ser expresados en base16 como el siguiente ejemplo:

rom_programmer.write(0, bytearray([0x0, 0x00, 0x30, 0x16, 0x01]))

Lo que es equivalente a usar base decimal como muestro a continuación:

rom_programmer.write(0, bytearray([0, 0, 48, 22, 1]))

Por tanto lo importante es que los bits más significativos sean representados como un valor entero. Aunque no sean de 8 bits como el resto de elementos su valor decimal será el mismo.

Ahora si tu programa hasta el momento como esta escrito requiere que todos tengan el mismo largo, recuerda que siempre puedes concatenar ceros a la izquierda y el valor será el mismo. Es decir si tienes algo del estilo:

111111111111111111111111111111111111 # Tiene 36 bits 0000111111111111111111111111111111111111 # Tiene 40 bits

Espero que eso aclare tu duda, de no ser así favor dejar un comentario en esta misma issue.

Saludos!