Open amandasolb opened 3 weeks ago
¡Hola!, instrucciones como CMP A, label y MOV B, label es lo mismo que CMP A, Lit y MOV B, Lit. En este caso la posición del label es el valor del literal, por ejemplo en este código:
DATA:
t0 1
t1 9
t2 4
CODE:
MOV B, t2
B va a valer 2.
holaa, me referia a labels como por ejemplo en el test call hay una funcion (func2) y en algun momento en el codigo aparece CMP A, func2. No hay nada en el DATA ademas. Muchas gracias.
Cuando pones un label, el label está asociado a una dirección y no a un valor, si la función func2 está en la posición 10 de tu código, entonces estarías haciendo CMP A, 10.
Pero no se supone que los labels no tienen direccion asociada? Es decir, estos son solo referencias para la instruccion que viene justo despues de los labels. Por ejemplo si tenemos el siguiente codigo: CODE: MOV A, 3 MOV B, 5 oli: ADD A, B MOV B, 1
Al final, lo único asociado a memoria sería MOV A,3 —> Direccion 0. MOV B,5 —> Direccion 1. ADD A, B —> Direccion 2. MOV B, 1—> Direccion 3. Y según lo que estoy entendiendo, quieren que consideremos el label, es decir: MOV A,3 —> Direccion 0. MOV B,5 —> Direccion 1. oli —> Dirección 2 ADD A, B —> Direccion 3. MOV B, 1—> Direccion 4. Pero eso no tendría sentido, según lo que hemos visto en clases
Con dirección me refiero al valor del PC donde está esa subrutina. Como tú mismo dices, los labels son referencias para la instrucción que viene, pero esa referencia está asociada al valor del PC donde se ubica esa subrutina, tu primer ejemplo está correcto, porque el label "oli" te va a referenciar la posición de la siguiente instrucción, en este caso el ADD A, B. Si luego hicieses un MOV B, oli, B valdrá 2, porque tu ADD A, B está en la posición 2.
Tenia una duda sobre los tests que están en el sussbembler, hay unas instrucciones que involucran labels como CMP A, label o MOV B, label. Mi duda va con que si tenemos que implementar esas instrucciones y como se haría eso.