要求解释UNIX V6的一些代码



目前我正在阅读这本书:Lions_Commentary_on_UNIX_6th_Edition,我一起试图理解unix v6的源代码,我发现一些代码很有趣:例如

. = 40^.
...
. = 60^.

这是我不太擅长的一些 PDP-11 程序集,所以谁能向我解释这些代码在这里尝试做什么?另外,在PDP-11中,还有另一个符号:"..",谁能解释一下这个符号有什么作用?

^运算符返回第一个操作数的值和第二个操作数的类型。

因此,.=40^.将位置计数器设置为当前段中的位置 40,我希望这将是数据或 bss。 普通.=40会尝试将位置计数器设置为绝对位置 40,这将是一个错误,因为as没有发出绝对代码。

..符号是重定位计数器,大约是内存中加载程序的位置。 对于早期PDP-11上的程序来说,没有重新定位的硬件是一个难题。 我记得,任何人用它做过的唯一一件事就是在打算在核心特定位置加载的程序开始时设置..=something

您可以在此处阅读 Dennis Ritchie 的 UNIX 汇编程序参考手册 PDF 格式。

.是位置计数器,因此汇编语言语句通过表达式40^.60^.调整位置计数器的位置,因此目的是移动汇编程序位置计数器。

如果声明为:

. = 40 + .

这意味着将位置计数器更改为 40(八进制)+ 位置计数器的当前值。 让我感到困惑的是,^是一个一元运算符,根据我拥有的MACRO11手册,在这种用法中没有意义。

相关内容

  • 没有找到相关文章

最新更新