Bagikan melalui


PROC

Menandai awal dan akhir blok prosedur yang disebut label. Pernyataan dalam blok dapat dipanggil dengan instruksi CALL atau arahan INVOKE .

Sintaks

label PROCdistance⟧ ⟦language-type⟧ ⟦ PUBLIC | PRIVATE | EXPORT ⟧ ⟦<prologuearg>⟧ ⟦USES reglist⟧ ⟦, parameter:tag⟧ ... ⟧
⟦FRAME:ehandler-address⟧ ⟧
Pernyataan
label ENDP

Keterangan

Argumen ⟦distance⟧ dan ⟦language-type⟧ hanya valid dalam MASM 32-bit.

⟦FRAME:ehandler-address⟧ ⟧ hanya valid dengan ml64.exe, dan menyebabkan MASM menghasilkan entri tabel fungsi dalam .pdata dan melepas kelelahan informasi dalam .xdata untuk pengecualian terstruktur fungsi yang menangani perilaku unwind.

Ketika atribut FRAME digunakan, atribut harus diikuti oleh . Direktif ENDPROLOG.

Lihat MASM untuk x64 (ml64.exe) untuk informasi selengkapnya tentang menggunakan ml64.exe.

Contoh

; ml64 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE
_text SEGMENT
Example1 PROC FRAME
   push r10
.pushreg r10
   push r15
.pushreg r15
   push rbx
.pushreg rbx
   push rsi
.pushreg rsi
.endprolog
   ; rest of function ...
   ret
Example1 ENDP
_text ENDS
END

Kode di atas akan memancarkan tabel fungsi berikut dan melepas informasi:

FileHeader->Machine 34404
Dumping Unwind Information for file ex2.exe

.pdata entry 1 0x00001000 0x00001023

  Unwind data: 0x00002000

    Unwind version: 1
    Unwind Flags: None
    Size of prologue: 0x08
    Count of codes: 3
    Frame register: rbp
    Frame offset: 0x0
    Unwind codes:

      Code offset: 0x08, SET_FPREG, register=rbp, offset=0x00
      Code offset: 0x05, ALLOC_SMALL, size=0x10
      Code offset: 0x01, PUSH_NONVOL, register=rbp

Lihat juga

Referensi arahan
Tata Bahasa MASM BNF