回想一下,我专注于编写源代码的进度。当我读到书时,我遇到两个专业词:输入点地址和可执行的起始地址。我只知道输入点地址是0x0。但我不知道他们之间的区别。
答案 0 :(得分:4)
术语很模糊,但我想我知道你在说什么。语言需要运行时支持。 C和C ++语言的标准是CRT。在程序开始运行之前,需要初始化CRT。打开stdout和stdin,初始化静态对象,设置信号,等等。
完成的两种基本方法,编译器可以对程序的main()入口点中的初始化代码进行调用。在main()内部的其余代码之前。这对于没有花式装载机的简单操作系统来说是典型的。入口点和可执行起始地址都是相同的。也是语言标准禁止递归main()的原因。
或者可以通过将可执行起始地址设置为运行时初始化函数来完成。然后,在初始化之后,调用程序的入口点。在Linux和Windows等更高级的操作系统上很常见。