0
我在理解如何獲得正確的分支命令操作碼時遇到了一些問題。 可以說的命令:PDP 11 - 如何知道分支命令的操作碼
beq .+40
的BEQ操作碼001400
我知道,在操作碼的最後兩個字符假設,包括我們需要跳轉的偏移量。
在這個問題的答案,它被寫入001417
,但我不明白爲什麼,他們是如何從40
得到17
?
會短暫的消化。
我在理解如何獲得正確的分支命令操作碼時遇到了一些問題。 可以說的命令:PDP 11 - 如何知道分支命令的操作碼
beq .+40
的BEQ操作碼001400
我知道,在操作碼的最後兩個字符假設,包括我們需要跳轉的偏移量。
在這個問題的答案,它被寫入001417
,但我不明白爲什麼,他們是如何從40
得到17
?
會短暫的消化。
的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
40(八進制)是32,17(八進制)是15.請注意,乘以2的存儲的偏移,所以15變爲30。然後仍有無法解釋的2個字節,我猜該指令測量分支後位置*的偏移量,而彙編代碼測量分支的* start *的偏移量。 – harold
我覺得哈羅德是對的。 17八進制數是0b001111,偏移量在被加到pc之前被乘以2,使得它爲0b0011110加上2指令,並且你得到0b0100000,它是40.許多體系結構偏移量在指令後被應用到pc上(想想在指令解碼並執行pc指向指令之後的字節時,用於獲取指令字節的PC。 –