Skip to content

Our first example

第一个程序(模块)虽然仅仅是实现了打印 Hello World 的部分,其中蕴含的知识却异常繁杂。对于初次接触PSP开发的人犹为困难.目而我们首先来介绍一下计算机系统相关的概念。

推荐阅读:CS:APP 异常控制流

系统调用

有些操作用户态程序没有权限执行,必须依靠调用操作系统提供的函数.通过PPSSPP的反汇编功能可以看到程序如何调用这些对用户而言不可再分的最基本的函数。

注:希望PPSSPP今后能够提供对elf文件的支持以便于debug 其实我们面对一个现成的库时就有点像面对操作系统:我们不了解也不关心它的具体实现,而只专注于它提供给我们的接口

线程(Thread)

  • 进程(Process)是在操作系统提供的不同地址空间下同时运行的程序
  • 线程是单个应用程序抽象出的在同一地址空间中同时执行的代码.

在面对并发的问题时,两者要考虑的问题有诸多相似性.

分块解读

  1. 奇怪的宏 PSP_MODULE_INFO() 在生成PRX时有用,置于.rodata.sceModuleInfo,参看文件格式一节
  2. Exit Call Back 回调函数:某事件发生时(收到信号时)异常控制流切入的函数 目标:注册回调函数 手段:在单独的线程注册 有了它我们就可以在PSP上按Home键调出退出对话框
  3. Event Loop 循环执行
  4. 系统级函数调用 pspsdk暴露出的可供调用而不明实现的函数