目前我正在阅读这本书:Lions_Commentary_on_UNIX_6th_Edition,我一起试图理解 unix v6 的源代码,我发现一些代码很有趣:例如
. = 40^.
...
. = 60^.
这是一些我不太擅长的 PDP-11 组件,所以谁能向我解释这些代码在这里尝试做什么?此外,在 PDP-11 中,还有另一个符号:“..”,任何人都可以解释这个符号的作用吗?
运算符返回第^
一个操作数的值和第二个操作数的类型。
因此.=40^.
,将位置计数器设置为当前段中的位置 40,我预计这将是数据或 bss。普通人.=40
会尝试将位置计数器设置为绝对位置 40,这将是一个错误,因为as
没有发出绝对代码。
该..
符号是重定位计数器,大约是加载程序的内存位置。对于没有重定位硬件的早期 PDP-11 上的程序来说,这是一个拼凑。我记得,任何人对它所做的唯一一件事就是..=something
在程序的开头进行设置,这些程序旨在加载到核心的特定位置。
您可以在此处以 PDF 格式阅读Dennis Ritchie 撰写的UNIX 汇编程序参考手册。
.
是位置计数器,因此汇编语言语句正在通过表达式调整位置计数器的位置,40^.
目的60^.
是移动汇编程序位置计数器。
如果声明阅读
. = 40 + .
这意味着将位置计数器更改为 40(八进制)+ 位置计数器的当前值。让我感到困惑的^
是,根据 MACRO11 手册,我拥有的一元运算符在这种用法中没有意义。