Laman

Senin, 22 April 2013

Entry Point (Titik Masuk)

Sekarang ke dalam subroutine. Alamat pertama dari subroutine ini disimbolkan dengn nama fact. Tentu saja nama fact hanyalah simbol yang dipakai oleh assembler, kenyataannya symbol ini akan diterjemahkan oleh assembler menjadi suatu letak atau alamat yang  berada di main storage runtime. Alamat ini ditentukan oleh assembler, linker dan loader.

#  int fact( int n )
#  {
#    if ( n<=1)
#      return 1;
#    else
#      return n*fact(n-1);
#  }
         .text
         .globl  fact
fact:
                                  # prolog        
         sub     $sp,$sp,4        #   1. Push return address
         sw      $ra,($sp)
         sub     $sp,$sp,4        #   2. Push caller's frame pointer
         sw      $fp,($sp)
         sub     $sp,$sp,4        #   3. Push register $s1
         sw      $s1,($sp)
         sub     $fp,$sp,0        #   4. $fp = $sp - space_for_variables (==0)
         move    $sp,$fp          #   5. $sp = $fp
         
                                  # body of subroutine
        . . . . . .
                            
epilog:                           # epilog
                                  #   1. Return value is already in $v0        
         add     $sp,$fp,0        #   2. $sp = $fp + space_for_variables (==0)
         lw      $s1,($sp)        #   3. Pop register $s1
         add     $sp,$sp,4        #          
         lw      $fp,($sp)        #   4. Pop $fp
         add     $sp,$sp,4        #           
         lw      $ra,($sp)        #   5. Pop $ra
         add     $sp,$sp,4        #            
         jr      $ra              #   6. return to caller 

Simbol fact adalah simbol global (juga disebut simbol eksternal) sehingga assembler, linker dan loader bisa menggunakan simbol tersebut untuk menunjuk tempat yang sama di main memory.

Sebuah lokasi samacam fact ini yang mejadi target sebuah pemanggilan subroutine, disebut entry point. Kadang kala sebuah subroutine mempunyai beberap entri point, tiap-tiapnya berkaitan dengan fungsi yang berbeda-beda.

Quest 24: Apakah simbol global selalu meunjuk ke sebuah entry point?
Jawab: Tidak, bisa juga simbol global menunjuk ke suatu data yang diperlukan untuk operasi.

Tidak ada komentar:

Posting Komentar