Está en la página 1de 2

##EJEMPLO DE LA FUNCION## void funcion(int a,int b) <----funcion que recibira valores a b codigo de calcu lo de los parametros de la funcion { if a>b&&a>0

then <----inicio del if salto condicional x=(a-b)/(a+b) <----si cumple entrara aqui else <----si no cumple x=(a+b)*(a-b) <----salta a esta etiqueta } main(){ int a=2, b=4; printf("%d",funcion(a,b)) } ##LLAMADA A LA FUNCION (assign, 2, --, a) a (assign, 4, --, b) b (push,--,--,t3) (push, --, --,a) (push, --, --, b) (call, --, --, E3) (pop, --, --, t4) ncion (despues de su ejecucion) (print, --, --, t4) (halt, --, --, --) <--- Asigna el valor de 2 a la variable <--- Asigna el valor de 4 a la variable <--- Apila la direccion de retorno <--- Ponemos a en la pila <--- Ponemos b en a pila <--- Llama a la funcion <--- Desapila el valor que retorna la fu <--- Imprime el resultado <--- Fin del programa

##CUERPO DE LA FUNCION DE FUNCION## (label, E3, --, --) <----indica donde empieza la funcion (pop ,--,--,a) <----saca el valor de a de la pila por poder operar con el (pop ,--,--,b) <----saca el valor de b de la pila por poder operar con el (isBigger ,a,b,t0) <----Almacena el resultado en una variable te mporal t0, que es el valor de la comparacion. (isBigger ,a,0,t1) <----Almacena el resultado en una variable te mporal t1, que es el valor de la comparacion. (and ,t0,t1,t2) <----Almacena el resultado de la comparacion en la variable temporal t2 (if_false ,t2,--,E1) <----salto incondicional a la etiqueta si no se cumpl e la codicion, salta hasta la siguiente etiqueta (-,a,b,t3) <----resta el valor de los parametros de la funcion a,b a la variable temporal t3 (+,a,b,t4) <----suma el valor de los parametros de la funcion a,b a la variable temporal t4 (/,t3,t4,t5) <----divide las variabes temporales t3 y t4 a signando a la variable temporal t5 (goto ,--,--,E2) <----Envia a la etiqueta donde se returna el valor de t5, para optener el resultado. (label, E1, --, --) <----Aqui salta si es falso el if (+,a,b,t3) <----suma el valor de los parametros de la funcion a,b a la variable temporal t3 (-,a,b,t4) <----resta el valor de los parametros de la funcion a,b a la variable temporal t4 (* ,t3,t4,t5) <----multiplicacion de las variabes temporales t3 y t

4 asignando a la variable temporal t5 (label, E2, --, --) (pop ,--,--,t5) <----desapila el valor devuelto por la funcio n y lo aplia a t5 (return ,t5,--,x) <----apila el valor de retorno de x a t5 (pop, --, --, x) <--- Desapila la variable x, para poder imprimirla (main) , recoge valor de retorno

También podría gustarte