Skill:编程技巧 - ikarishinjieva/unixV6-code-analyze-chs GitHub Wiki
JSR PC,DST
将当前PC入栈,从DST中恢复先前的PC
RTS PC
退栈恢复先前PC,回到子程序调用前的现场,使程序继续执行
2313 struct
2314 {
2315 int rsr;
2316 int rbr;
2317 int xsr;
2318 int xbr;
2319 };
...
2393 while((KL->xsr&0200) == 0)
2394 ;
...
2314 {
2315 int rsr;
2316 int rbr;
2317 int xsr;
2318 int xbr;
2319 };
...
2393 while((KL->xsr&0200) == 0)
2394 ;
...
- 无名结构 是在Unix V6中可以被编译的特殊结构,现代C语言编译器已经无法编译了
- 无名结构 多用于方便寻址
- 例中
- KL是一个地址,为0177560
- KL->xsr 即 0177564 地址中的数据
- SW = 0177570,为一内存地址
- 现要判断该地址里的内容是否为0
- if(SW == 0)
- 由于SW是一个指针,所以显然不行
- if(SW-> ==0)
- C语言中显然没有这样的语法,所以也行不通
- 首先定义一个无名结构体,参考无名结构
0173 /* single integer /*
0174
0175 struct{int integ; }
0174
0175 struct{int integ; }
- 现在就可以通过语句if (SW->integ == 0) 来判断SW所指向的值是否为空了