汇编代码到系统功能(iPhone)

时间:2013-03-07 23:48:27

标签: iphone assembly system system-calls

可能是一个非常愚蠢的问题,但有人可以解释为什么不能编写汇编代码来触发系统功能或控制硬件?例如,是否无法编写代码来关闭/打开屏幕甚至设备的电话?

我不是在谈论越狱设备,也不是为应用程序商店制作应用程序。带有程序集的普通应用程序,用于调用系统函数。

如果确实可行,任何人都有很好的参考或起点来完成这些任务?

由于

2 个答案:

答案 0 :(得分:2)

iPhone使用受内存保护的操作系统,其中每个用户进程都包含在其自己的虚拟内存地址空间中。地址空间受存储器管理单元(MMU)硬件的保护,并且尝试访问OS给予进程的区域之外的存储器将导致异常。操作系统会为自己保留硬件内存范围,但不会将其用于用户进程。因此,无法直接从用户进程连接到硬件。

答案 1 :(得分:1)

当然可以从汇编代码中调用系统函数。您认为C或C ++应用程序的作用是什么?它正是如此。 C / C ++和汇编代码最终都会(在编译时)转换为CPU执行的机器代码。

我不确定这样做的指南会在哪里,但是您当然可以在调试器中运行C程序并查看它如何调用各种系统函数,或者您可以反汇编该程序并在不运行的情况下读取反汇编程序调试器中的程序。

在任何情况下,您都无法通过汇编编写的程序获得对设备的更多控制,而不是使用C语言编写的程序。操作系统应限制直接访问CPU级别的某些I / O设备和内存区域,在程序集和C之间没有区别,它与CPU完全相同,只是机器代码中的一堆指令。