【问题标题】:Linkers and Loaders for Objective-C [closed]Objective-C 的链接器和加载器 [关闭]
【发布时间】:2013-04-09 01:22:16
【问题描述】:

我最近看到了 John Levine 的书“Linkers and Loaders”。这本书写于 2000 年。如果有人读过他的书,作者所说的一切是否仍然与 2013 年的 Objective-C 相关?我问,因为它看起来像是一本好书放在我的书架上,但如果信息已经过时,我可能不想真正研究这本书。

谢谢!

【问题讨论】:

  • 不知道,没看过。有具体问题吗?
  • 我确信它不会覆盖 ARC
  • 我真的没有具体的问题。我只是想了解链接器和/或加载器通常是如何工作的。我试图深入了解变量和指针是如何工作的,我读过的这与符号表有关,它与链接器和编译器的工作方式有关......所以我到目前为止已经阅读了。
  • 与 ARC 一样,它可能不涵盖允许在运行时解析对象大小(实例变量的偏移量)的新运行时,这消除了实例变量的脆弱基类问题也意味着实例变量不需要在.h文件中声明。

标签: objective-c linker symbol-table


【解决方案1】:

是与否...

我不知道那本具体的书,但如果它是 2000 年的最新版本,那么其中的材料应该仍然有效,可以了解事情的幕后工作原理。

但是,您并不需要了解任何有关链接和加载的知识即可理解变量和指针。

您也不需要像这样理解符号表。符号表是编译器用来在编译期间跟踪变量的数据结构,作为将您编写的程序代码转换为 CPU 理解的指令的一部分。

编程语言中的变量和指针的概念是对 CPU 级别的内存位置和内存地址概念的抽象(它们本身在某种意义上是对较低级别的东西的抽象,最后是电路,如果你挖掘足够深,电子!;-))

您应该寻找一本关于编程语言概念的书,而不是编译、链接和加载。一本好书将介绍变量和类型,然后介绍数组和记录等组合,最后介绍对象(本质上只是您将发现的变量)。类型和变量结合在一起,一个说如何解释位集合,另一个则提供了保存位集合的​​地方。指针是某种指针类型的值(位的集合),就像整数是某种整数类型的值一样。

变量和指针不是难懂的概念,但它们经常被误解——关于 SO 的很多问题都源于对这些概念的误解——所以你的追求很好,去阅读吧!抱歉,但我没有提到手。

【讨论】:

  • 感谢您的帮助。 :)
【解决方案2】:

鉴于 ObjC 自 80 年代后期以来一直作为本机编译语言被积极使用(之前,它主要是一种预编译器生成的语言 + 运行时),并且从那时起也支持链接/加载,它将是本书适用于任何从 C 派生的语言。话虽如此,在链接/加载是由开发人员几乎没有 [OS X, OpenStep] 到没有 [iOS] 可配置性的系统。

当然,一个有趣的分歧,以及对链接/加载的深刻理解与任何与编译和执行工具链相关的工作都相关。

【讨论】:

  • 感谢您的帮助。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-19
  • 2021-09-19
  • 2010-10-23
  • 1970-01-01
  • 2014-01-22
  • 1970-01-01
相关资源
最近更新 更多