【问题标题】:MASM naming convention for identifiers beginning with a question mark?以问号开头的标识符的 MASM 命名约定?
【发布时间】:2020-08-28 17:03:42
【问题描述】:

BNF grammar for MASM,一个标识符可以这样命名:

标识符的第一个字符可以是大写或小写 字母字符 ([A–Za-z]) 或以下四个字符中的任何一个:@ _ $ ?其余字符可以是任何相同的字符或 十进制数字 ([0–9])。最大长度为 247 个字符。

对于以?(问号)开头的标识符是否有任何 MASM(或程序集)命名约定?

【问题讨论】:

    标签: assembly naming-conventions masm


    【解决方案1】:

    我不知道有任何记录在案的前导 ?s 约定。但 MASM 在扩展包含 LOCAL 标签的宏时似乎使用了两个前导问号。

    这在 AFAIK 中没有明确记录为约定,但 MASM 程序员指南在名为 “在宏中定义本地符号”的部分中顺便提到了它


    我们也可以自己写一段简单的代码来测试一下:

    .686
    .model flat,stdcall
    option casemap:none
    
    FOO MACRO
    LOCAL local_to_foo
    local_to_foo:
    ENDM
    
    .code
    
    start:
    
    FOO
    FOO
    
    END start
    

    如果我们告诉 MASM 为此生成一个列表文件(使用 /Fl 选项),代码部分的列表将如下所示:

     00000000           .code
    
     00000000           start:
    
                    FOO
     00000000            1  ??0000:
                    FOO
     00000000            1  ??0001:
    
                    END start
    

    底线是,作为程序员,最好不要在标识符中使用前导问号,就像 MASM 程序员指南建议你不要使用前导 @ 字符,因为 MASM 将其用于一些预定义的特殊符号.

    【讨论】:

      猜你喜欢
      • 2014-02-09
      • 1970-01-01
      • 2012-10-12
      • 2011-02-09
      • 2012-07-18
      • 2018-01-20
      • 2016-05-07
      • 1970-01-01
      • 2011-04-03
      相关资源
      最近更新 更多