IIC2343 / Syllabus-2024-2

45 stars 0 forks source link

[Contenido - I2] duda variables computador básico y lineas en rom POP, RET #50

Open jrodriguezluna opened 1 month ago

jrodriguezluna commented 1 month ago

Buen día, me surgieron dos dudas. ¿Qué espacio en memoria ocupan las variables? y ¿POP y RET ocupan dos "lineas de instrucciones" en la sección "CODE:"?

Ambas dudas me parecen algo obvias pero me gustaría corroborar. Respecto a la primera, me imagino que al crear una variable tal que:

DATA:
var   15

estaríamos guardando el valor 15 en mem[0] (ahora cada vez que salga var en el código se reemplaza con mem[0]). Si usamos más de una variable estas se van guardando en las subsiguientes direcciones de memoria.

DATA: 
var 15  // mem[0] = 15
var1 14 // mem[1] = 14
var2 13 // mem[2] = 13

es esto cierto?

La segunda duda tiene que ver con las instrucciones POP y RET. Como estas son instrucciones de dos ciclos tenía entendido que cuando "contamos" las lineas por cada instrucción en la rom, estas valen por 2, tipo:

         CODE:
0     |  MOV B, 10
2     |  PUSH B
3/4   |  POP B
5     |  CALL func_1
      | [...]
10    |  MOV A, B
11/12 |  RET 

de nuevo, es esto cierto?

Geeermy commented 1 month ago

¡Hola @jrodriguezluna!

  1. Sí, es correcto. En particular, las direcciones de memoria que indicas corresponden a la memoria de datos (RAM). Ahora ojo, no es que var se reemplace por mem[0], sino que se reemplaza directamente por 0. Esto es porque el Assembler interpreta el número como un literal numérico y luego, el hardware, se encarga de utilizarlo como dirección de memoria para acceder al dato almacenado en mem[0].
  2. Sí, es cierto, pero en tu código veo que te saltaste algunos números. Te dejo la versión corregida.
         CODE:
0     |  MOV B, 10
1     |  PUSH B          // PUSH solo ocupa una dirección de la memoria de instrucciones.
2/3   |  POP B
4     |  CALL func_1
        | [...]          // Asumiremos que se ocupan de las direcciones 5 a la 9.
10    |  MOV A, B
11/12 |  RET

Cabe destacar que estas dos direcciones de memoria se ocupan en la memoria de instrucciones (ROM).

¡Saludos!

jrodriguezluna commented 1 month ago

muchas gracias!