我在书中有这样的问题,我是为了检查自己而做的,但我不知道正确答案,也没有任何解释。
它有两个部分“a”和“b”
a) A = B & C[0]
b) A = A ? B : C[0]
C[0] = 0x00001234
A = 0x00000000
B = 0x00002222
它想要我
1)what is the result of A
2) the MIPS instruction for each part
3)show the bit level representation of each in structure.
感谢
答案 0 :(得分:3)
&
是一个有点明智的AND。如果两个相应的输入位都是1:
0x00001234 = .... 0001 0010 0011 0100
0x00002222 = .... 0010 0010 0010 0010
AND result = .... 0000 0010 0010 0000 = 0x00000220
我不知道MIPS,但该指令可能只是被称为and
。
?
是三元运算符:您的示例意味着“如果A是真正的布尔表达式,则返回B,否则返回C [0]”。一般来说,C false是零而真正的非零(我不是100%肯定,如果这是标准化的 - 我不认为它是在早期的标准,但它是常见的用途)所以
答案 1 :(得分:2)
&
是C中的逐位AND运算符。
例如。
0000& 0001 = 0000
?
是撰写if
A = A ? B : C[0]
表示A得到值=(如果A为真,那么B ELSE C [0])
将Hex转换为二进制并进行练习。
编辑:澄清:将“AND”设为 - > “按位和”
答案 2 :(得分:1)
mips:
a)A = B& C [0]
$ t1 = C
$ t2 = B
$ t3 = A
lw $ t0,0($ t1);将c移至temp reg
和$ t3,$ t0,$ t2;按位执行和
b)A = A? B:C [0]
$ t1 = C
$ t2 = B
$ t3 = A
beq $ 0,$ t3,3;如果A为0,则下移3行
添加$ t3,$ 0,$ t2;将B移至A
j end;转到结尾
lw $ t0,0($ t1);将c加载到临时寄存器
添加$ t3,$ 0,$ t0;将临时值移入
端: