Module Asmgenretaddr

Predictor for return addresses in generated Asm code.
The return_address_offset predicate defined here is used in the
concrete semantics for Mach (module Machconcr) to determine the
return addresses that are stored in activation records.

Consider a Mach function f and a sequence c of Mach instructions
representing the Mach code that remains to be executed after a
function call returns. The predicate return_address_offsetfcofs
holds if ofs is the integer offset of the Asm instruction
following the call in the assemby code obtained by translating the
code of f. Graphically:

We now show that such an offset always exists if the Mach code c
is a suffix of f.(fn_code). This holds because the translation
from Mach to Asm is compositional: each Mach instruction becomes
zero, one or several Asm instructions, but the order of instructions
is preserved.