2017-10-22 479 views
0

我在理解rlwinm PPC彙編指令時遇到了一些問題(旋轉左邊的字,然後和帶有掩碼)。32位PPC rlwinm指令

我試圖扭轉功能

rlwinm r3, r3, 0, 28, 28 

我已經知道什麼是r3這部分。在這種情況下,r3是一個4字節的整數,但我不確定這個指令rlwinm對它做了什麼。

順便說一下,這是一個32位的機器。

+0

你看過指令集的參考嗎?第一個零是移位,兩個「28」操作數是掩碼的開始和結束(這是一個'1'位的序列,因此顯然不是值'28')。 – Jester

+0

[PowerPC指令集參考](http://www.ds.ewi.tudelft.nl/vakken/in1006/instruction-set/) –

回答

6

你的理解不是沒錯。由於每IBM link這個指令,你看到的形式是:

rlwinm <target=r3>, <source=r3>, <shift=0>, <begin-mask=28>, <end-mask=28> 

因此,沒有實際移動參與。並且用於AND操作的實際掩碼是從beginend掩碼位置構建的,它沒有作爲明確參數(a)給出。

在這種情況下,由於兩個位置是28,掩模是一個簡單的單個比特,按照鏈接的頁面(略轉述):

如果開始-掩模值小於所述結束掩碼值加1,則在起始點和結束點之間(包括起始點和結束點之間)的掩碼位設置爲1。所有其他位都設置爲零。

因此,您所看到的說明不會比單一的AND操作更復雜。


(一)一個表單,允許你指定實際面膜(假設它是由連續1位),但它的 -argument版本,實際上只是語法糖彙編程序可以變成五個參數。