Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone/ARM呼叫约定_Iphone_Assembly_Calling Convention - Fatal编程技术网

iPhone/ARM呼叫约定

iPhone/ARM呼叫约定,iphone,assembly,calling-convention,Iphone,Assembly,Calling Convention,在iPhone/ARM上,哪些CPU寄存器是应该保留的函数(如果有的话?维基百科的文章对ARM的约定有一个很好的总结。维基百科的文章对ARM的约定有一个很好的总结。旧的,但回答不正确。维基百科通常是不准确的(有时完全不正确),这是前一种情况的一个例子。有一个通用的调用约定(这是维基百科的文档),但操作系统可能会偏离——Android和iOS都会这样做(很可能Win 8会,但当二进制文件开始出现时我们就会知道) 为iOS提供了正确的规范,因此在这里重复没有意义。最值得注意的是,请注意r7和r12

在iPhone/ARM上,哪些CPU寄存器是应该保留的函数(如果有的话?

维基百科的文章对ARM的约定有一个很好的总结。

维基百科的文章对ARM的约定有一个很好的总结。

旧的,但回答不正确。维基百科通常是不准确的(有时完全不正确),这是前一种情况的一个例子。有一个通用的调用约定(这是维基百科的文档),但操作系统可能会偏离——Android和iOS都会这样做(很可能Win 8会,但当二进制文件开始出现时我们就会知道)


为iOS提供了正确的规范,因此在这里重复没有意义。最值得注意的是,请注意r7和r12的使用。还要注意,ARMv6和ARMv7是不同的。现在,您想要的是ARMv7体系结构(A4,5,6..)

旧的,但答案不正确。维基百科通常是不准确的(有时完全不正确),这是前一种情况的一个例子。有一个通用的调用约定(这是维基百科的文档),但操作系统可能会偏离——Android和iOS都会这样做(很可能Win 8会,但当二进制文件开始出现时我们就会知道)


为iOS提供了正确的规范,因此在这里重复没有意义。最值得注意的是,请注意r7和r12的使用。还要注意,ARMv6和ARMv7是不同的。到目前为止,您希望所有操作系统上都使用ARMv7体系结构(A4、5、6..)

——相同的约定?我觉得很难相信。在x86上,有几十种约定。本文作者在x86一节中很好地提到了这一点,指出了拥有这么多约定(主要是由于缺少寄存器)是多么值得注意,并提供了一篇单独的文章来解释这些约定。Wikipedia对这个主题的讨论是我见过的最完整的,并且提供了更多关于为什么x86与其他芯片相比有如此大杂烩的解决方案的讨论。简而言之:在x86的早期(与其他芯片不同),有几个编译器供应商走了不同的路。但是今天,即使是在x86上,也有一个强大的举动来标准化ABI。在所有操作系统上-相同的约定?我觉得很难相信。在x86上,有几十种约定。本文作者在x86一节中很好地提到了这一点,指出了拥有这么多约定(主要是由于缺少寄存器)是多么值得注意,并提供了一篇单独的文章来解释这些约定。Wikipedia对这个主题的讨论是我见过的最完整的,并且提供了更多关于为什么x86与其他芯片相比有如此大杂烩的解决方案的讨论。简而言之:在x86的早期(与其他芯片不同),有几个编译器供应商走了不同的路。但今天,即使是在x86上,也有一个强大的举措来标准化ABI。R7的不同使用并没有破坏ABI,只是破坏了调试工具。iOS ABI和EABI之间的一个重要区别是64位参数的对齐:iOS使用4字节对齐,而EABI使用8字节对齐。R7的不同使用不会破坏ABI,而只是调试工具。iOS ABI和EABI之间的一个重要区别是64位参数的对齐:iOS使用4字节对齐,而EABI使用8字节对齐。