0
我在理解rlwinm
PPC彙編指令時遇到了一些問題(旋轉左邊的字,然後和帶有掩碼)。32位PPC rlwinm指令
我試圖扭轉功能
rlwinm r3, r3, 0, 28, 28
我已經知道什麼是r3
這部分。在這種情況下,r3
是一個4字節的整數,但我不確定這個指令rlwinm
對它做了什麼。
順便說一下,這是一個32位的機器。
我在理解rlwinm
PPC彙編指令時遇到了一些問題(旋轉左邊的字,然後和帶有掩碼)。32位PPC rlwinm指令
我試圖扭轉功能
rlwinm r3, r3, 0, 28, 28
我已經知道什麼是r3
這部分。在這種情況下,r3
是一個4字節的整數,但我不確定這個指令rlwinm
對它做了什麼。
順便說一下,這是一個32位的機器。
你的理解不是挺沒錯。由於每IBM link這個指令,你看到的形式是:
rlwinm <target=r3>, <source=r3>, <shift=0>, <begin-mask=28>, <end-mask=28>
因此,沒有實際移動參與。並且用於AND
操作的實際掩碼是從begin
和end
掩碼位置構建的,它沒有作爲明確參數(a)給出。
在這種情況下,由於兩個位置是28,掩模是一個簡單的單個比特,按照鏈接的頁面(略轉述):
如果開始-掩模值小於所述結束掩碼值加1,則在起始點和結束點之間(包括起始點和結束點之間)的掩碼位設置爲1。所有其他位都設置爲零。
因此,您所看到的說明不會比單一的AND
操作更復雜。
(一)有是一個表單,允許你指定實際面膜(假設它是由連續1位),但它的 -argument版本,實際上只是語法糖彙編程序可以變成五個參數。
你看過指令集的參考嗎?第一個零是移位,兩個「28」操作數是掩碼的開始和結束(這是一個'1'位的序列,因此顯然不是值'28')。 – Jester
[PowerPC指令集參考](http://www.ds.ewi.tudelft.nl/vakken/in1006/instruction-set/) –