【发布时间】:2010-04-30 12:01:11
【问题描述】:
我正在尝试了解旧的经典 Mac 应用程序的入口点。我已经反汇编了第一个 CODE 资源(不是 CODE#0,它是跳转表)。代码引用堆栈外的一些变量:0004(A7) 处的一个字,从 000C(A7) 开始的长字数组,其长度是 0004(A7) 处的值,以及该数组之外的最后一个长字似乎是一个指向字符串的指针。
长单词数组乍一看像字符串,所以表面上看起来就像我们在处理 (int argc, char ** argv) 的情况,除了“argv”数组在堆栈帧中是内联的。
当一个程序第一次被 Mac OS 调用时,它的堆栈/寄存器应该期待什么?
【问题讨论】:
-
感谢您的指点,马丁。然而,MacOS 比 Linux 早了好几年,而且肯定不是基于 Unix 运行时(“资源和数据分叉”,有人知道吗?)。我正在查看的代码与 Unixy argc、argv 条目约定几乎但不太相似。
标签: macos assembly calling-convention 68000