Aracılığıyla paylaş


PROC

Label adlı bir yordam bloğunun başlangıcını ve sonunu işaretler. Bloktaki deyimleri CALL yönergesi veya INVOKE yönergesi ile çağrılabilir.

Sözdizimi

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

Açıklamalar

distance⟧ ve ⟦language-type⟧ bağımsız değişkenleri yalnızca 32 bit MASM'de geçerlidir.

⟦FRAME:ehandler-address⟧ ⟧ yalnızca ml64.exe ile geçerlidir ve MASM'nin .pdata içinde bir işlev tablosu girişi oluşturmasına ve bir işlevin yapılandırılmış özel durum işleme geri alma davranışı için .xdata'da geri sarma bilgileri oluşturmasına neden olur.

FRAME özniteliği kullanıldığında, bunu bir takip etmesi gerekir. ENDPROLOG yönergesi.

ml64.exe kullanma hakkında daha fazla bilgi için bkz . x64 için MASM ( ml64.exe).

Örnek

; 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

Yukarıdaki kod aşağıdaki işlev tablosunu yayar ve bilgileri geri alır:

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

Ayrıca bkz.

Yönergeler başvurusu
MASM BNF Dil Bilgisi