2012-04-09 24 views
0

目前我正在閱讀這本書:Lions_Commentary_on_UNIX_6th_Edition,我一起嘗試瞭解unix v6的源代碼,並且發現了一些令人感興趣的代碼:例如請求解釋UNIX V6的一些代碼

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

這是一些PDP-11組件,我不是很在行,所以任何人都可以向我解釋了什麼這些代碼試圖在這裏做什麼? 此外,在PDP-11中,還有另一個符號:「..」,任何人都可以解釋這個符號做什麼嗎?

回答

0

.是位置計數器,因此彙編語言語句通過表達式40^.60^.來調整位置計數器的位置,所以意圖是移動彙編位置計數器。

如果語句讀

. = 40 + . 

這將意味着改變位置計數器40(八進制)+位置計數器的當前值。令我困惑的是,^是一個一元運算符,根據MACRO11手冊,我沒有理解這種用法​​。

0

運算符^返回第一個操作數的值和第二個操作數的類型。

因此.=40^.將位置計數器設置爲當前段中的位置40,我認爲這是數據或bss。一個普通的.=40會嘗試將位置計數器設置爲絕對位置40,這將是一個錯誤,因爲as沒有發出絕對代碼。

..符號是重定位計數器,大約是程序加載的內存位置。這是早期PDP-11上沒有重定位硬件的程序的混亂。據我所知,任何人曾經做過的唯一的事情就是在計劃開始時設置..=something,這些程序是打算在覈心中的特定位置加載的。您可以在這裏閱讀彙編器手冊: http://wwwlehre.dhbw-stuttgart.de/~helbig/os/v6/doc/as.ps