microsoft-specific modefiers

microsoft-specific modefiers是微軟的特殊修飾聲明符,包含__asm、__based、__cdecl、__declspec、__fastcall、__stdcall。

基本信息,目錄,聲明符,舉例,使用方法,

基本信息

這樣寫法的聲明符,只能在微軟開發的開發環境下編譯。

目錄

微軟特殊聲明符簡介
特殊聲明符舉例簡介
其他開發環境的類似特殊聲明符使用方法

聲明符

Keyword
Meaning
Used to Form Derived Types?
__asm
Insert the following assembly-language code.
No
__based
The name that follows declares a 32-bit offset to the 32-bit base contained in the declaration.
Yes
__cdecl
The name that follows uses the C naming and calling conventions.
Yes
__declspec
The name that follows (thread, naked, dllimport, or dllexport) specifies a Microsoft-specific storage-class attribute.
No
__fastcall
The name that follows declares a function that uses registers, when available, instead of the stack for argument passing.
Yes
__stdcall
The name that follows specifies a function that observes the standard calling convention.
Yes
The following sections discuss the syntactic usage and semantic meaning of the Microsoft-specific modifiers.

舉例

1.__asm
作用:在 Visual Studio IDE 代碼文檔中插入一段彙編代碼的標識關鍵字,聲明符與硬體無關。
格式:
(1)__asm mov eax, ptr_data 插入一行彙編代碼
(2)__asm{...} {...}中的...表示多行彙編代碼
2.
被這些修飾關鍵字修飾的函式,其參數都是從右向左通過堆疊傳遞的(__fastcall 的前面部分由ecx,edx傳), 函式調用在返回前要清理堆疊,但由調用者還是被調用者清理不一定。

使用方法

在單片機開發中,為了提高效率而採用 C 與 Assemble 混編的方式以此提高效率,例如(延時程式):
#pragma ASM
delay: MOV R7, #25H
d1: MOV R6, #50H
d2: MOV R5, #200H
DJNZ R5, $ ; $是當前IP指針指向的地址
DJNZ R6, d2
DJNZ R7, d1
RET
#pragma ENDASM
注意,使用上述代碼必須設定單片機工程->屬性( Project->Properties ),勾選 Generate Assembler SRC File 和Assemble SRC File 。

相關詞條

熱門詞條

聯絡我們