home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / emulate / sparc / ack.s next >
Text File  |  1991-11-05  |  795b  |  62 lines

  1. !
  2. ! exercise function call/return mechanism
  3. ! by computing Ackermann's function
  4. !
  5.     mov    3,%o0
  6.     call    _ack
  7.     mov    3,%o1
  8. exit:
  9.     mov    1,%g1
  10.     ta    0
  11.  
  12.     
  13. _ack:
  14.     !#PROLOGUE# 0
  15. !    sethi    %hi(LF12),%g1
  16. !    add    %g1,%lo(LF12),%g1
  17.     save    %sp,-96,%sp
  18.     !#PROLOGUE# 1
  19.     st    %i0,[%fp+0x44]
  20.     st    %i1,[%fp+0x48]
  21.     ld    [%fp+0x44],%o0
  22.     tst    %o0
  23.     bne    L14
  24.     nop
  25.     ld    [%fp+0x48],%o0
  26.     add    %o0,0x1,%o0
  27.     b    LE12
  28.     nop
  29. L14:
  30.     ld    [%fp+0x48],%o1
  31.     tst    %o1
  32.     bne    L15
  33.     nop
  34.     ld    [%fp+0x44],%o0
  35.     sub    %o0,0x1,%o0
  36.     mov    0x1,%o1
  37.     call    _ack
  38.     nop
  39.     mov    %o0,%i0
  40.     jmpl    %i7+8,%g0
  41.     restore %g0,%g0,%g0
  42. L15:
  43.     ld    [%fp+0x48],%o1
  44.     sub    %o1,0x1,%o1
  45.     ld    [%fp+0x44],%o0
  46.     call    _ack
  47.     nop
  48.     mov    %o0,%o1
  49.     ld    [%fp+0x44],%o0
  50.     sub    %o0,0x1,%o0
  51.     call    _ack
  52.     nop
  53.     b    LE12
  54.     nop
  55. LE12:
  56.     mov    %o0,%i0
  57.     ret
  58.     restore %g0,%g0,%g0
  59.  
  60.  
  61.  
  62.