1. 系统调用和内存访问
苹果芯片Mac与Linux操作系统在系统调用和内存访问办法上存在差异。苹果芯片Mac的系统调用函数编号被苹果视为私有,可能会变动,仅供教诲目的利用。此外,苹果芯片Mac在内存对齐和数据访问方面也有特定的哀求。
2. Clang汇编器语法
在编写代码时,我们不能利用GNU汇编器语法,而该当调度代码以适应Clang汇编器语法。同样,macOS上的gcc命令实际上是调用Clang C编译器的。为了透明度,所有对gcc的调用都将被更换为clang。
3. 系统调用的差异
在进行系统调用时,Darwin(苹果操作系统的内核)和Linux有几个关键差异。例如,Darwin利用ADRP和ADD指令组合来访问数据,而不是Linux中的LDR指令。此外,苹果文档指出,所有可写数据常日通过全局偏移表(GOT)间接访问。
4. “Hello World”示例
为了在苹果芯片Mac上运行“Hello World”程序,我们须要根据Darwin和Linux内核之间的差异进行一些调度。例如,我们须要在代码中插入.align 4来肃清警告,由于Darwin喜好内存对齐。
5. 调试工具
末了,我们还须要把稳,苹果芯片Mac上的gdb已被LLVM项目的LLDB调试器所取代。LLDB的语法与gdb不完备相同,因此在利用时须要把稳差异。