It’s natural for programmers to view the executable binary
generated from their programs through the prism of their source
code
. In that view, functions do not get jumped into sideways,
nor are they called from locations other than their explicit call
sites; variables retain their values unless assigned to by name or
by reference; assembly instructions cannot spring into existence
unless somehow implied by the code’s semantics; and so on.