1

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

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

这是一些我不太擅长的 PDP-11 组件,所以谁能向我解释这些代码在这里尝试做什么?此外,在 PDP-11 中,还有另一个符号:“..”,任何人都可以解释这个符号的作用吗?

4

2 回答 2

1

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

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

..符号是重定位计数器,大约是加载程序的内存位置。对于没有重定位硬件的早期 PDP-11 上的程序来说,这是一个拼凑。我记得,任何人对它所做的唯一一件事就是..=something在程序的开头进行设置,这些程序旨在加载到核心的特定位置。

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

于 2016-06-02T02:38:37.677 回答
0

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

如果声明阅读

. = 40 + .

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

于 2012-05-09T17:55:50.910 回答