assembly - Can somebody tell me How , i can solve it , and how i can learn it -
assume following program run in 32-bit little-endian mips processor
addi sr1. sr0, 0x80000000 , sr3, sr2, sr1 beq sr3, sr0, end addi sr2, sr2, 1 end:
register
sr2
storesx
, signed integer. function executed program , written in high level language?what value stored in
sr2
, @ end of program , ifsr2=0xfffffff5
please can tell me , how can start learning or book?
it's late here take grain of salt.
the function increment x if negative
int unknown(int x) { return x<0 ? ++x : x;}
the first instruction set $r1
value 0x80000000
bit mask. use fact $0
0
, $r1 = 0 + 0x80000000 = 0x80000000
.
the second instruction ands $r2
(the x
value) $r1
(the bit mask) , store result in $r3
. result 0x80000000
if , if x
negative (see 2 complement format) otherwise zero.
the third instruction jump end if $r3
zero, i.e. if x
positive or zero.
the last instruction increment x
, executed if x
negative.
if $r2 = 0xfffffff5
x
-11
(again 2 complement).
after function x
-10
, $r2 = 0xfffffff6
.
note: convert , 2 complement not number , add one.
Comments
Post a Comment