【问题标题】:Where did the text segment get its name?文本段的名称从何而来?
【发布时间】:2010-11-19 22:19:48
【问题描述】:

传统的汇编器和更高级别的编译器根据预期用途使用多个内存。因此,存在数据段、堆栈段、bss 和文本段。文本段也称为代码段。

文本段?对于机器码

我问过所有我能找到的老前辈,像机器代码这样不可读的东西是如何被称为“文本段”的。每个人都同意,这确实是它的名字,但似乎没有一个人对此感到惊讶。没有人能给出解释。

这是您通过启发我们展示您的极客历史知识的机会。

【问题讨论】:

标签: history compiler-construction internals


【解决方案1】:

进一步了解 nos 的 cmets,我找到了 GE-635 Programming Manual 的扫描版本,并在宏汇编器部分找到以下内容:

GE-625/635 宏汇编器是 提供给 一些专业的程序员 编译器的便利性和 汇编程序的灵活性。 [...] 这 输出选项使他能够获得 可重定位的二进制文本以及 绝对格式。

因此,“二进制文本”的使用似乎是 GE 的俗语,或者可能是当时常用的术语(请记住,那是读卡器/打孔器用于大量 IO 的日子)。因此,一种可能的路径是 GE,通过 GE-645 到 Multics,通过贝尔实验室的 Multics 工作到 Unix,再到 Linux。

【讨论】:

  • 它可能会更早。 multics 上的 PL/1 编译器用于输出文本段 - 指令(代码)和链接段
  • GE-635 或多或少早于 Multics 和 Multics PL/1 编译器,正如上面链接的手册的原始日期所示。因此,尽管 Multics 人确实始终将“文本段”称为包含可执行机器指令的文件,但他们很可能是从 GE 人员那里得到的。请注意,Multics 的第一个 PL/1 编译器 EPL 是在贝尔实验室编写的。我怀疑虽然机器代码使用“文本”这个词来自计算历史的更早时期。
【解决方案2】:

可能是因为程序代码,无论是难以阅读的机器指令,实际上是程序文本 - 即包含指令的文本吗?就像您将微积分书称为教科书一样,尽管除非您熟悉作为代码的数学符号,否则很难破译。..

【讨论】:

    【解决方案3】:

    这可能与代码部分通常是只读的这一事实有关,并且它还可能包含程序可以作为消息显示给用户的文本消息的字符串。因此是“文本”部分。这与包含可修改数据的“数据”部分形成对比。

    【讨论】:

      【解决方案4】:

      来自Wictionary

      1. 由多个字形、字符、符号或句子组成的书面文章。
      2. 一本书、大部头或其他著作。
      3. (口语)手机之间传输的简短书面信息;一条短信。
      4. (计算)可以解释为人类可读文本的数据(通常与二进制数据形成对比)。

      我认为计算机术语的含义源于程序是在程序运行之前写入到计算机中的内容,而不是数据,读入,处理,然后写回。

      【讨论】:

        【解决方案5】:

        我建议意思是指汇编器(在这种情况下,这就是我们所说的)语言是文本,可读文本。所以段.text可以被理解为代码程序(文本)被编写的段和程序的文本所在的段,但最后被称为段.data。它也可以称为段.code,因为它是程序代码所在的段。

        在我看来应该被称为:.code(它是文本,并且它在逻辑上与其他部分有所不同)。

        【讨论】:

        • 但是“代码”是什么意思?在计算机和电信之前,“代码”被加密......文本!也许“文本”是对“代码”一词的反应。你是什​​么意思它的“代码”?代码给你,但对我们黑客来说是纯文本。
        • “代码”和“密码”不一样。代码只是一种不同的编写方式,可能更紧凑,或者使用不同的符号集,而“密码”是一种特殊类型的代码,旨在隐藏不想要的读者的信息,除非他们知道,否则他们无法理解如何破译它(知道“钥匙”)。
        【解决方案6】:

        我一直认为它来自与人类可读文本的类比。

        你用英语写了一段文字。它是一串字母、标点符号等,并遵守语言定义的某些规则(即句法、语法等)。 懂语言的人都能听懂。

        同样,您用机器语言编写(即构建)“文本”。它是一串二进制数据(数字),并遵守语言定义的某些规则(即指令集架构)。 知道该机器语言(即实现 ISA)的处理器可以理解(即执行)它。

        IMO 术语“代码”不太合乎逻辑。 “代码”是指已从原始形式转换(编码)为某种替代表示(无论出于何种目的)的一条信息。但是对于可执行的“代码”,不清楚它的“原始”形式是什么。

        【讨论】:

          【解决方案7】:

          名称段来自旧时代使用的内存管理技术,现在已被paging 取代。我相信名称文本来自与小说的类比。就像小说中的文字一样,代码可以被认为是小说中的一段文字。代码的文本部分描述了代码或者它讲述了程序的作用。

          我同意kdgregory 的回答,但我认为binary text 符号来自这个事实。

          【讨论】:

            【解决方案8】:

            我会说“文本”暗示阅读。因为文本段是只读的,所以我觉得是来源于一本教科书的思想,也就是最字面意义上的只读。

            要么是那个,要么是当时内部使用的某种缩写,它可能意味着类似“To EXecuTe”的意思。不过,词源会随着时间的流逝而消失。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2011-04-18
              • 1970-01-01
              • 1970-01-01
              • 2014-11-16
              • 1970-01-01
              • 2015-11-21
              • 1970-01-01
              • 2018-06-30
              相关资源
              最近更新 更多