共用方式為


使其跳躍至內嵌組譯碼中的標籤

Microsoft 專有的

是否有一般的 c 或 C++ 標籤,標籤在__asm區塊已在其定義的 (不只是在區塊) 的函式的範圍。 這兩個組件的指示和goto陳述式可以跳到標籤的內部或外部__asm區塊。

標籤中所定義__asm區塊是不區分大小寫。 兩者都goto陳述式和組件指示可以參考這些標籤,而不考慮為大小寫。 C 和 C++ 的標籤會區分大小寫只使用時goto陳述式。 組件指示可以跳到 c 或 C++ 的標籤,而不考慮為大小寫。

下列程式碼會顯示所有排列方式:

void func( void )
{
   goto C_Dest;  /* Legal: correct case   */
   goto c_dest;  /* Error: incorrect case */

   goto A_Dest;  /* Legal: correct case   */
   goto a_dest;  /* Legal: incorrect case */

   __asm
   {
      jmp C_Dest ; Legal: correct case
      jmp c_dest ; Legal: incorrect case

      jmp A_Dest ; Legal: correct case
      jmp a_dest ; Legal: incorrect case

      a_dest:    ; __asm label
   }

   C_Dest:       /* C label */ 
   return;
}
int main()
{
}

不要將 c 程式庫函式名稱當作標籤在__asm區塊。 舉個例說,您可能想要使用exit的標籤,如下所示:

; BAD TECHNIQUE: using library function name as label
jne exit
   .
   .
   .
exit:
   ; More __asm code follows

因為結束 是名稱為 c 程式庫函式,這段程式碼可能會導致跳到 結束函數取代想要的位置。

為在 MASM 程式中,將錢幣符號 ($) 做為目前的位置計數器。 它是指標籤指示目前組合。 在__asm區塊,其主要用途是為了長條件的跳躍點:

jne $+5 ; next instruction is 5 bytes long
jmp farlabel
; $+5
   .
   .
   .
farlabel:

結束 Microsoft 特定

請參閱

參考

內嵌組譯工具