How To CONVERT This pgm TO MIPS64 ASSEMBLY LANGUAGECode:W = 1; forever { if (n % 2 != 0) w *= x; n /= 2; if (n == 0) break; x *= x; }
How To CONVERT This pgm TO MIPS64 ASSEMBLY LANGUAGECode:W = 1; forever { if (n % 2 != 0) w *= x; n /= 2; if (n == 0) break; x *= x; }
Last edited by Salem; 10-29-2012 at 11:02 PM. Reason: demunged the tagging horror
I guess the first place to start is by locating a MIPS64 instruction reference, possibly on the web.
But your instructor should be able (and indeed should have already done so) to give you such a reference.
Then you can look up instructions for assignment, mul, div, comparisons and jumps.
If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut.
If at first you don't succeed, try writing your phone number on the exam paper.
Also, you could start by rewriting it into assembly pseudocode (not specific to any architecture, just generally assembly-like). For example:
Code:# Calculate W = XN set N = set X = set W = 1 loop: test bit 0 in N if clear, jump to okay multiply W and X, saving result in W okay: multiply X by X, saving result in X shift N one bit down (right) compare N to zero if not equal, jump to loop
Hey, that was uncalled for! No need to insult, I was just trying to help someone learn.
When learning programming, it is important to learn how to express yourself in terms appropriate for the language. Assembly directives and opcodes are all very simple, performing just one simple action at a time.
I thought that breaking down a high level code snippet to the very basic operations needed to achieve the same results would be instructive.
"...a computer is a stupid machine with the ability to do incredibly smart things, while computer programmers are smart people with the ability to do incredibly stupid things. They are,in short, a perfect match.." Bill Bryson