You are on page 1of 1
[ARQUITETURA E ORGANIZACAO DE COMPUTADORES 1. Um procedimento pode ser chamado de mais de um local 2. Uma chamada de procedimento pode aparecer em outro pracedimento. Iso permite © arinha procedimentos até uma profundidade qualquer. . 3. Cada chamada de procedimento corresponde @ um retomno no progrema chamado. nto de Come gostarfamos de poder chemar um procedimento a partir de diversos pontos, 0 processador precisa, de alguma forma, salvar 0 endereco de retorno para que este g0ssa ocorrer corretamente. Existem tvés locals comuns para atmazenar 0 enderaco de retorno: Registradior. * Inicio do procedimento chamado. * Topo da pitha. samar procedimento no local X.S0 3 Considere uma instrucdo.em linguagem de maquina CALL X, que significa c vécnica de registvador for usada, CALL X causa as saguintes ages: RN— PC+A PC — 3 onde RN € um registrador que sempre 6 usado para essa finalidade, PC € 0 nho da instrugao. O procedimento chamado agora pode salvar o contetico de RN a ser usado para 0 retomno tador de programaeAéotama posterior Uma segunda possibilidade é armazenar 0 endereco de retorna no inicio do procedimento, Nesse caso, CALL gi X cause X<— PC+A PO X41 i330 € muito pritica.O endereco de retorno foi armazenado de forma sequra. ‘As duas técicas anteriores funcionam e tém sido usadas. A Gnica limitagSo dessas técnicas € que elas compl cam 0 uso dos procedimentos /eentrantes, Um procedimento reentrante é aquole em que é possivel ter varias cha: madas abertas a0 mesmo tempo. Um procedimento recursive (aquele que chama a si mesmo} & um exemplo do so desse recurso (vela Apéndice H]. Se os parametios forem passados por meio ce registiadores ou da men para 0 procecimento reenirante, algumn cédiga devers ser cespansavel por salvar os pardmetros, de modo que os registradores ou o espaco da memprla estejam dispanive's para outras chamadas de procecimento, Uma técnica mais geral e poderosa é usar uma pilha (veja, no Apéndice 10A, uma discussao sobre as pilhas), Quando 0 processador executa uma chamada, ele coloca o endereca de reiorno na pilha. Quando ele executa um retorne, usa 0 enderego armazenado na pilha, A Figura 109 ilustra 6 uso da pilha. ‘Além de oferecer um endereco armazenado de retamo, normaimente também é preciso passar parém: ‘com uma chamada de procedimenta. Estes poder ser passados em registradores. Qutra possibilidade & armaze- nar as pardmetros na meméria logo apés a instrucia CALL. Nesse caso, 0 retomo precisa ser para o local apés os pardmetios, Novamente, es5as duas técnicas possuem desvantagens. Se forem usados registradores, 0 programa xa implementar sub-totinas aninhadas da Figura 108 ‘4601 $651 101 “son 4101 «01 401 lraeey : * z zi (5 (eyConteddo ApS CALL. «Apis Ape (Ape Apés iiss da plba CALL ProelProe2iniial RETURN CALL Proc? RETURN RETURN

You might also like