findfn.c
来自「unix v7是最后一个广泛发布的研究型UNIX版本」· C语言 代码 · 共 58 行
C
58 行
#/* * * UNIX debugger * */#include "defs.h"MSG NOCFN;INT callpc;BOOL localok;SYMTAB symbol;STRING errflg;findroutine(cframe) L_INT cframe;{ REG INT narg, inst; INT lastpc, back2; BOOL v; v=FALSE; localok=FALSE; lastpc=callpc; callpc=get(cframe+2, DSP); back2=get(leng(callpc-2), ISP); IF (inst=get(leng(callpc-4), ISP)) == 04737 /* jsr pc,*$... */ THEN narg = 1; ELIF (inst&~077)==04700 /* jsr pc,... */ THEN narg=0; v=(inst!=04767); ELIF (back2&~077)==04700 THEN narg=0; v=TRUE; ELSE errflg=NOCFN; return(0); FI IF findsym( (v ? lastpc : ((inst==04767?callpc:0) + back2) ),ISYM) == -1 ANDF !v THEN symbol.symc[0] = '?'; symbol.symc[1] = 0; symbol.symv = 0; ELSE localok=TRUE; FI inst = get(leng(callpc), ISP); IF inst == 05726 /* tst (sp)+ */ THEN return(narg+1); FI IF inst == 022626 /* cmp (sp)+,(sp)+ */ THEN return(narg+2); FI IF inst == 062706 /* add $n,sp */ THEN return(narg+get(leng(callpc+2), ISP)/2); FI return(narg);}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?