これは、C とアセンブリを混合した PDP-11 コードです。以下では、u.u_rsav は配列ポインターです。
savu(u.u_rsav);
この関数のアセンブリ コードは次のとおりです。
_savu: bis $340,PS
mov (sp)+,r1
mov (sp),r0
mov sp,(r0)+
mov r5,(r0)+
bic $340,PS
jmp (r1)
プロシージャに入る前に、最初に引数をプッシュし、次に戻りポイントの PC 値をプッシュするようです。したがって、r1 には PC が格納され、r0 には引数が格納されます。私のパズルは、アセンブリ コードが呼び出しポイントに戻る前に、sp (スタック ポインター) が元の値に復元されないことです。引数がスタックに格納された位置をまだ指しています。