编程规范

差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

兩邊的前次修訂版前次修改
下次修改
前次修改
wiki:自动化与科技指导:minecoprocessors:编程规范 [2023/12/08 15:41] nikoqwwiki:自动化与科技指导:minecoprocessors:编程规范 [2023/12/08 16:04] (目前版本) – [CDecl] nikoqw
行 3: 行 3:
  
 <wrap cjk-em>约定</wrap>是必须遵守的规定,是程序之间沟通的桥梁,不遵守会导致程序不能与现有的程序库交互。 <wrap cjk-em>约定</wrap>是必须遵守的规定,是程序之间沟通的桥梁,不遵守会导致程序不能与现有的程序库交互。
-<wrap cjk-em>规范</wrap>是强烈建议遵守的规定,是为了方便开发者使用相同的方法理解不同人编写的代码,使代码易于维护+ 
 +<wrap cjk-em>规范</wrap>是强烈建议遵守的规定,是为了方便开发者理解代码,使代码易于维护,方便不同开发者使用相同的方法理解不同人编写的代码。
  
 ===== 用户程序约定 ===== ===== 用户程序约定 =====
行 16: 行 17:
 </code> </code>
 ==== 标签 ==== ==== 标签 ====
-所有标签使用下划线分词。除[[#Calling convention|编程规范]]所规定的特殊前后缀外,一律使用小写字母。+所有标签使用下划线分词。除 [[#Calling convention|Calling convention]] 所规定的特殊前后缀外,一律使用小写字母。
 <code ASM> <code ASM>
 nimshab_miga: nimshab_miga:
行 180: 行 181:
 使用寄存器传参,没有返回值。 使用寄存器传参,没有返回值。
  
-采用 StdCall 的函数必须使用 d c b a 的顺序用寄存器保存参数。+采用 StdCall 的函数最好使用 d c b a 的顺序用寄存器保存参数。
  
 采用 StdCall 的函数不加任何后缀。 采用 StdCall 的函数不加任何后缀。
行 209: 行 210:
  
 无论调用方使用是否使用了被调用函数内部使用的寄存器,调用方在 CALL 函数前都必须将<wrap cjk-em>被调用函数内部使用的寄存器</wrap>通过压栈的方式暂存状态,CALL 结束后自行择机复原寄存器状态。 无论调用方使用是否使用了被调用函数内部使用的寄存器,调用方在 CALL 函数前都必须将<wrap cjk-em>被调用函数内部使用的寄存器</wrap>通过压栈的方式暂存状态,CALL 结束后自行择机复原寄存器状态。
 +
 +被调用的函数在退出前不复原自身使用的寄存器的状态。
  
 ==== CDecl ====  ==== CDecl ==== 
-“C Declaration”,C 语言的调用约定。本调用约定是为了应对数量较多的参数。+“C declaration”,C 语言的调用约定。本调用约定是为了应对数量较多的参数。
  
 使用栈传参,使用寄存器返回值。 使用栈传参,使用寄存器返回值。
wiki/自动化与科技指导/minecoprocessors/编程规范.1702021266.txt.gz · 上一次變更: 2023/12/08 15:41 由 nikoqw
GNU Free Documentation License 1.3 若無特別註明,本 wiki 上的內容都是採用以下授權方式: GNU Free Documentation License 1.3