如何在SPARC程序集中使用xor和

时间:2013-04-25 08:07:18

标签: assembly bit sparc

set 0xDEADBEEF, %o1 

set 0x13579246, %o2 

xor %o1, %o2, %o1 

注册o1会是什么?

set 0xDEADBEEF, %o1 

set 0x13579246, %o2 

and %o1, %o2, %o1

注册o1会是什么?

1 个答案:

答案 0 :(得分:0)

分别是CDFA2CA9和12059246,因为两者都是按位运算,所以这里没有架构依赖。见:http://en.wikibooks.org/wiki/SPARC_Assembly/Arithmetic_Instructions#Logic_Instructions

关于实际计算:

请注意:

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

由于在按位运算中,任何基数中2的幂的每个数字都是独立的,因此为任何基数创建表都很简单:

基数2中的

(^表示xor,&表示和):

& 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次查找,您可能提前或未能提前准备。