2013-07-09 15 views
0

我在理解如何獲得正確的分支命令操作碼時遇到了一些問題。 可以說的命令:PDP 11 - 如何知道分支命令的操作碼

beq .+40 

的BEQ操作碼001400
我知道,在操作碼的最後兩個字符假設,包括我們需要跳轉的偏移量。
在這個問題的答案,它被寫入001417,但我不明白爲什麼,他們是如何從40得到17
會短暫的消化。

+1

40(八進制)是32,17(八進制)是15.請注意,乘以2的存儲的偏移,所以15變爲30。然後仍有無法解釋的2個字節,我猜該指令測量分支後位置*的偏移量,而彙編代碼測量分支的* start *的偏移量。 – harold

+0

我覺得哈羅德是對的。 17八進制數是0b001111,偏移量在被加到pc之前被乘以2,使得它爲0b0011110加上2指令,並且你得到0b0100000,它是40.許多體系結構偏移量在指令後被應用到pc上(想想在指令解碼並執行pc指向指令之後的字節時,用於獲取指令字節的PC。 –

回答

0

的PDP-11編程卡寫: 新PC < - 更新PC +(2×偏移) 和 更新PC = BR指令的地址+ 2, 注:(2×偏移)意味着偏移以16位字計數。

所有的計算都是八進制的。

您閱讀001417. 17是偏移量(低8位)。 新PC = PC更新+(2×17)=更新PC + 36 更新PC = 2,和2 + 36 = 40。

所以字的拆卸 「001417」 讀取 「BR。+ 40」 。從「br。+ 40」中你可以注意到40/2 = 20(單詞)和20-1 = 17個單詞。

來源:http://www.jfc.org.uk/documents/scandoc.php?page=4&maxpage=10%0A&dir=pdp11%2Fpdp11