-2
set 0xDEADBEEF, %o1 

set 0x13579246, %o2 

xor %o1, %o2, %o1 

寄存器 o1 中会有什么?

set 0xDEADBEEF, %o1 

set 0x13579246, %o2 

and %o1, %o2, %o1

寄存器 o1 中会有什么?

4

1 回答 1

0

分别是 CDFA2CA9 和 12059246,由于都是按位运算,所以这里没有架构依赖。请参阅:http ://en.wikibooks.org/wiki/SPARC_Assembly/Arithmetic_Instructions#Logic_Instructions

关于实际计算:

注意:

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

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

以 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 次查找。

于 2013-04-25T08:13:55.140 回答