在RxDOS源代码中,具有相同名称的函数区分为数字后缀,如下所示:
RxDOS_WRITESTUB:
...
RxDOS_WRITESTUB_06:
...
RxDOS_WRITESTUB_10:
...
为什么会这样?
答案 0 :(得分:3)
这似乎是实施范围标签的粗略方式。源代码是用MASM 5.1编译的,它不支持默认标记的函数作用域。函数中定义的所有标签(例如PROC / ENDP块)在函数外部是可见的,因此需要注意不要在两个不同的函数中定义具有相同名称的标签。
此处使用的约定是不使用MASM的PROC / ENDP块来定义函数,只需使用普通标签来标记函数的开头。函数中的标签是通过在函数名称后附加数字来形成的。因此RxDOS_WRITESTUB
是函数的名称,而RxDOS_WRITESTUB_06
是该函数中标签的名称。后面的标签只能由函数中的代码引用。
我不建议您在自己的代码中遵循约定。自从1991年发布MASM 6.0以来,MASM默认支持函数范围标签。更好的约定是编写如下代码:
RxDOS_WRITESTUB PROC
...
loop_args:
...
found_switchchar:
...
RxDOS_WRITESTUB ENDP
请注意,我已经为函数本地标签提供了更多描述性名称而不是数字。