A sequence of input language (IL) instructions of a guest system is
converted, for example by binary translation, into a corresponding
sequence of output language (OL) instructions of a host system, which
executes the OL instructions. In order to determine the correct return
address after any IL call to a subroutine, the corresponding OL return
address is stored in an array at a location determined by a hash function.
After completion of execution of the OL translation of the IL subroutine,
execution is transferred to the address stored in the array at the
location where the correct OL return address was previously stored. This
location may have been overwritten by some other OL return address. This
transfer will therefore be to one of three places: 1) either back to the
correct OL call site, in which case execution may continue as normal; 2)
directly to a back-up return address recovery module; or 3) to an
incorrect OL call site (created upon translation of some other IL
subroutine call), in which case execution is transferred to the back-up
recovery module. A confirmation instruction block is included in each OL
call site to determine whether the transfer was to the correct or
incorrect call site.
Een reeks de instructies van de inputtaal (IL) van een gastsysteem wordt omgezet, bijvoorbeeld door binaire vertaling, in een overeenkomstige reeks de instructies van de outputtaal (OL) van een gastheersysteem, dat de instructies OL uitvoert. Om het correcte terugkeeradres na om het even welke vraag van IL aan een subroutine te bepalen, wordt het overeenkomstige OL terugkeeradres opgeslagen in een serie bij een plaats die door een knoeiboelfunctie wordt bepaald. Na voltooiing van uitvoering van de Ol- vertaling van de subroutine van IL, wordt de uitvoering overgebracht naar het adres dat in de serie bij de plaats wordt opgeslagen waar het correcte OL terugkeeradres eerder werd opgeslagen. Deze plaats kan door één of ander ander OL terugkeeradres beschreven te zijn. Deze overdracht zal daarom aan één van drie plaatsen zijn: 1) één van beiden terug naar de correcte OL vraagplaats, waarbij de uitvoering kan verdergaan normaal; 2) rechtstreeks aan een hulp de terugwinningsmodule van het terugkeeradres; of 3) aan een onjuiste OL vraagplaats (die op vertaling van één of andere andere de subroutinevraag van IL wordt gecreeerd), waarbij de uitvoering wordt overgebracht naar de hulpterugwinningsmodule. Een blok van de bevestigingsinstructie is inbegrepen in elke OL vraagplaats om te bepalen of de overdracht aan de correcte of onjuiste vraagplaats was.