2013-04-25 61 views
-2
set 0xDEADBEEF, %o1 

set 0x13579246, %o2 

xor %o1, %o2, %o1 

什麼是註冊o1?如何在SPARC程序集中使用xor和and

set 0xDEADBEEF, %o1 

set 0x13579246, %o2 

and %o1, %o2, %o1 

什麼是註冊o1?

+0

如果您有SPARC在您的處置,爲什麼你不能只是嘗試它? – mvp 2013-04-25 08:12:36

+0

對不起。我明白如何去做。我做的方法,例如XOR,將兩個數字轉換爲二進制,然後使用邏輯,如果兩者都是0或者兩者都是1,則將0置於0,如果其中任何一個不同,則放入1並創建一個新的二進制數,然後將其轉換回到十六進制 但問題是,我必須做一個定時測試,我不認爲我有時間做所有這些和其他問題。所以我正在尋找一種更快的方法來執行此操作 – user2318744 2013-04-25 08:31:08

+0

只需在程序員模式下啓動Linux'gnome-calculator'或Windows'calc'並使用'XOR'或'AND'按鈕(我相信Mac也有類似的功能)。 – mvp 2013-04-25 08:51:55

回答

0

CDFA2CA9和12059246,因爲兩者都是按位運算,所以這裏沒有架構依賴關係。見:http://en.wikibooks.org/wiki/SPARC_Assembly/Arithmetic_Instructions#Logic_Instructions

關於實際計算:

注意的是:

0x0 == 0b0000 
0x1 == 0b0001 
0x2 == 0b0010 
... 
0xf == 0b1111 

由於在按位操作,在任何鹼基每個數字是2的冪是independnt,它是簡單的創建用於任何基部的表:

在基座2

(^表示異或,&裝置和):

& 0 1 
0 0 0 
1 0 1 

^ 0 1 
0 0 1 
1 1 0 

而且在底座16(十六進制):

and 0 1 2 3 4 5 6 7 8 9 A B C D E F 
0 0 1 2 3 4 5 6 7 8 9 A B C D E F 
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 
2 0 0 2 2 0 0 2 2 0 0 2 2 0 0 2 2 
3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 
4 0 0 0 0 4 4 4 4 0 0 0 0 4 4 4 4 
5 0 1 0 1 4 5 4 5 0 1 0 1 4 5 4 5 
6 0 0 2 2 4 4 6 6 0 0 2 2 4 4 6 6 
7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 
8 0 0 0 0 0 0 0 0 8 8 8 8 8 8 8 8 
9 0 1 0 1 0 1 0 1 8 9 8 9 8 9 8 9 
A 0 0 2 2 0 0 2 2 8 8 A A 8 8 A A 
B 0 1 2 3 0 1 2 3 8 9 A B 8 9 A B 
C 0 0 0 0 4 4 4 4 8 8 8 8 C C C C 
D 0 1 0 1 4 5 4 5 8 9 8 9 C D C D 
E 0 0 2 2 4 4 6 6 8 8 A A C C E E 
F 0 1 2 3 4 5 6 7 8 9 A B C D E F 

xor 0 1 2 3 4 5 6 7 8 9 A B C D E F 
0 0 1 2 3 4 5 6 7 8 9 A B C D E F 
1 1 0 3 2 5 4 7 6 9 8 B A D C F E 
2 2 3 0 1 6 7 4 5 A B 8 9 E F C D 
3 3 2 1 0 7 6 5 4 B A 9 8 F E D C 
4 4 5 6 7 0 1 2 3 C D E F 8 9 A B 
5 5 4 7 6 1 0 3 2 D C F E 9 8 B A 
6 6 7 4 5 2 3 0 1 E F C D A B 8 9 
7 7 6 5 4 3 2 1 0 F E D C B A 9 8 
8 8 9 A B C D E F 0 1 2 3 4 5 6 7 
9 9 8 B A D C F E 1 0 3 2 5 4 7 6 
A A B 8 9 E F C D 2 3 0 1 6 7 4 5 
B B A 9 8 F E D C 3 2 1 0 7 6 5 4 
C C D E F 8 9 A B 4 5 6 7 0 1 2 3 
D D C F E 9 8 B A 5 4 7 6 1 0 3 2 
E E F C D A B 8 9 6 7 4 5 2 3 0 1 
F F E D C B A 9 8 7 6 5 4 3 2 1 0 

第一種方法是指這樣做32次非常簡單的計算(一個簡單的變換爲二進制後,然後再轉換爲十六進制),所述第二裝置操作的方式8點的查找表中的你可能會或可能不能提前做好準備。

+0

你能告訴我你是如何得到答案的嗎?我對此感到困惑。 – user2318744 2013-04-25 08:18:15