Unix的早期版本包括Doug McIlroy的工具tmg
(“ transmogrifier”),它是早期的编译器。TMG是用Dennis Ritchie的汇编语言以及TMGL本身(TMG转换为汇编语言)实现的。这是TMG的手册(1972)。这是来自版本6 Unix的完整源代码。
由于我试图了解McIlroy的TMG实施方式是如何工作的,因此我正在阅读该文件(TMG完成tmgl.s
的翻译)tmgl.t
。我对以下摘录感到困惑:
.1=.
1
.2=.
2
.3=.
和:
goto;..2
..3:null
..2:
我阅读了PAL-11R和Unix Assembly手册,但是不记得有任何解释。
特别:
.
意思是“位置计数器”,但这是什么.3=.
?..
意思是“搬迁柜台”,那是..3
什么?(更糟糕的是,这种语法似乎只在TMG实现中遇到,而在Unix V6的任何其他源文件中都没有。而且,为排除代码损坏或逐步淘汰语法的可能性,TMG源实际上是在Python中编译的运行Unix V6的PDP-11仿真器。)
.1
,..1
没有特殊含义。它们是简单的标识符(标签,变量等)。除非使用声明.globl
,否则默认情况下它们将是本地的。
那时就是这种情况,现在仍然如此。例如,gcc
使用.
以防止静态变量从与由用户定义的符号冲突。
什么是
.3=.
?
它将指定给本地符号.3
的位置计数器的值(当前段内的偏移量)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句