2013-05-03 50 views
1

我最近想擴大我的C語言的知識,我碰到的是用於發射方案,可能發出一個字節。在C編程中,「發射」是做什麼的?

__declspec(naked) void marker_begin() { 
__asm { 
    _emit 0x51; 
    _emit 0x21; 
    _emit 0x1A; 
    _emit 0x14; 
    _emit 0x2C; 
    _emit 0x5B; 
} 

}

那會是什麼用的? 在此先感謝。

+0

這看起來像內聯彙編給我。 – Musa 2013-05-03 03:59:41

+0

@Musa謝謝,你絕對是對的。內聯彙編器中「發射」是做什麼的? – AdamGreenhill 2013-05-03 04:10:52

+0

db是類似的指令,請看這裏: http://stackoverflow.com/questions/6916050/what-is-the-equivalent-of-emit-in-masm – 2013-05-03 04:23:31

回答

9

C程序是通過使用_asm關鍵字執行聯彙編代碼。 _asm是MSDN中使用的Microsoft特定關鍵字。 __asm關鍵字調用內聯彙編器。它後面必須有一個彙編指令,一組用大括號括起來的指令,或者至少是一對空括號。

_emit僞指令與MASM的指令DB相似。 _emitMSDN特定僞指令。 _emit用於定義當前文本段中當前位置的單個即時字節。 _emit一次只能定義一個字節,並且只能定義文本段。

+1

非常感謝!我會讚揚你,但我沒有聲望。 – AdamGreenhill 2013-05-09 01:36:17