对于PDP-11,我如何更改以下的程序集片段,以便它只有两个指令,但它们与这四个指令完成相同的工作?
tst r0
blt label
cmp r0, #75
bgt label
Run Code Online (Sandbox Code Playgroud) 这是PDP-11代码混合C和汇编.在下面,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)
Run Code Online (Sandbox Code Playgroud)
看起来在进入程序之前,它首先推送参数,然后推送返回点PC值.因此,r1存储PC,r0存储参数.我的谜题是sp(堆栈指针)在汇编代码跳回调用点之前不会恢复到原始值.它仍然指向参数存储在堆栈中的位置.