#include <iostream.h>

int main() {
  int a;
  int b;
  int i;

  cout << "In assembly: ";
  asm("	mov	0x5, %o0	");
  asm("	st	%o0, [%fp + -12]");  //a=5
  asm("	mov	0x1, %o0");
  asm("	st	%o0, [%fp + -16]");// b=1
  asm("	mov	0x0, %o0");
  asm("	st	%o0, [%fp + -20]");//i=0
  asm("_loop:");
  asm("	ld	[%fp + -20], %o0");
  asm("	ld	[%fp + -12], %o1");
  asm("	cmp	%o0, %o1");
  asm("	bge	_exit");
  asm("	nop");
  asm("	ld	[%fp + -16], %o0");
  asm("	umul	%o0, 0x2, %o1");
  asm("	st	%o1, [%fp + -16]");
  asm(" ld      [%fp + -20], %o0");
  asm(" inc     %o0");
  asm(" st      %o0, [%fp + -20]");
  asm("	ba _loop");
  asm(" nop");
  asm("_exit:	");

  cout << "2^" << a << "=" << b << endl;

}
  
  
