Page 1 of 212> Show 40 post(s) from this thread on one page

Go4Expert (http://www.go4expert.com/)
-   Assembly Language Programming (ALP) Forum (http://www.go4expert.com/forums/assembly-language-programming-forum/)
-   -   Ackermann Function (http://www.go4expert.com/forums/ackermann-function-t19526/)

 final_semester 23Sep2009 08:55

Ackermann Function

Can anyone help me in writing Ackermann Function function in assembly language. I'm using MIPS and the function needs to be Recursive.

h**p://img41.imageshack.us/img41/9972/akermannfunction.jpg

 nimesh 24Sep2009 02:15

Re: Ackermann Function

go easy on the fonts buddy

 xpi0t0s 24Sep2009 03:47

Re: Ackermann Function

We won't write it for you. How far have you got and where are you stuck?

 final_semester 7Oct2009 09:53

Re: Ackermann Function

here guys I was able to write the C program .. but m having trouble writing the MIPS version of it... I'm having difficulty using the stack pointer and what not...

this is what I have so far
C code
Code:

```#include<stdio.h> #include<conio.h> int AckFun(int,int); void main() {     int result,m,n;     clrscr();     printf("Enter the positive integer values of m and n : ");     scanf("%d %d",&m,&n);         result=AckFun(m,n);     printf("\nThe value of A(%d,%d) = %d",m,n,result);     getch(); } int AckFun(int m,int n) {   int send;   if(m==0)   {       if(n==0)         send=1;       else         send=n+1;   }   else if(n==0)       send=AckFun(m-1,1);   else       send=AckFun(m-1,AckFun(m,n-1));   return=send; }```
MIPS code
Code:

``` main:         li \$so, 3        # m = s0 = a0         li \$s1, 3        # n = s1 = a1                         add \$a0, \$s0, 0         add \$a1, \$s1, 0         jal ackermann                        move \$a0, \$v0         li \$v0, 1         syscall         li        \$v0, 10         syscall ackermann:         addi \$sp, \$sp, -8         sw \$s0, 4(\$sp)         sw \$ra, 0(\$sp) case_one: bne \$a0, 0, case_two```

 final_semester 7Oct2009 10:22

Re: Ackermann Function

this is how far I have reached

Code:

```main:         li \$a0, 3        # m = a0         li \$a1, 3        # n = a1                         jal ackermann                        move \$a0, \$v0         li \$v0, 1         syscall         li        \$v0, 10         syscall ackermann:                 addi \$sp, \$sp, -8         sw \$ra, 4(\$sp)         sw \$a1,        0(\$sp)                 bne \$a0, 0, other         add \$v0, \$a0, 1         lw \$ra, 4(\$sp)         addi \$sp, \$sp, 8                 jr \$ra other:         bne \$a1, 0, other_two         addi \$a0, \$a0, -1         jal ackermann other_two:                         addi \$a1, \$a1, -1         jal ackermann         addi \$a1, \$v0, 0         addi \$a0, \$a0, -1                 jal ackermann```

 final_semester 7Oct2009 11:44

Re: Ackermann Function

k..now m stuck here

Code:

```main:         li \$a0, 3        # m = 3         li \$a1, 3        # n = 3                         jal ackermann                        move \$a0, \$v0         li \$v0, 1         syscall         li        \$v0, 10         syscall ackermann:                 addi \$sp, \$sp, -12                # creating space on the stack (3 columns)         sw \$a0, 4(\$sp)                        # saving origional m         sw \$a1, 8(\$sp)                        # saving origional n         sw \$ra, 0(\$sp)                        # saving origional caller return address          ERROR ON THIS LINE         case_one:                                        # m = 0                 bne \$a0, 0, case_two         add \$v0, \$a1, 1                 j exit case_two:                                        # n = 0         bne \$a1, 0, case_three         addi \$a0, \$a0, -1         li \$a1, 1         jal case_one case_three:                                                                addi \$a1, \$a1, -1         jal ackermann         addi \$a1, \$v0, 0         addi \$a0, \$a0, -1                 jal case_one exit:         lw \$ra, 0(\$sp)         addi \$sp, \$sp, 12                jr \$ra```

 xpi0t0s 7Oct2009 12:13

Re: Ackermann Function

Well, if you're in your final semester, you should already know that the exact error message is rather essential in helping identifying the cause of the problem. So why not tell us what the error message is instead of just saying "error on this line".

 final_semester 7Oct2009 19:29

Re: Ackermann Function

my expertise is not in programming but in analog circuit designing, DSP etc... I dont want the solution, just a better explanation why's there a error on that line

 xpi0t0s 7Oct2009 20:06

Re: Ackermann Function

Well, how do we know if we don't know what the error is.

OK, let me say it straight. TELL US THE ERROR.

 final_semester 7Oct2009 20:23

Re: Ackermann Function

main:
li \$a0, 3 # m = 3
li \$a1, 3 # n = 3

jal ackermann

move \$a0, \$v0
li \$v0, 1
syscall

li \$v0, 10
syscall

ackermann:

addi \$sp, \$sp, -12 # creating space on the stack (3 columns)
sw \$a0, 4(\$sp) # saving origional m
sw \$a1, 8(\$sp) # saving origional n
sw \$ra, 0(\$sp) # saving origional caller return address ERROR HERE

case_one: # m = 0

bne \$a0, 0, case_two

j exit

case_two: # n = 0

bne \$a1, 0, case_three
li \$a1, 1

jal case_one

case_three:

jal ackermann