RPX and RPL Overview
RPLs are pieces of a program that you can use explicitly or implicitly.
- Implicit means to link with an import library where use of code and data is seamless
- An RPL that you depend on must exist completely and have an import library before
you can link with that import library.
- Modules cannot implicitly link with each other; there is a one-way dependency of modules
on each other.
- Explicit means to look up at runtime manually.
- You look up code and data symbol addresses using an OS function call.
- Modules can link with each other manually at runtime.
RPL Is "REL PLus"
- REL/RSO is used for Wii.
- Cafe uses RPX/RPL, with numerous improvements:
- Dynamically loadable/unloadable
ELF format files
- Best-case constant time
- Worst case log2n
- Simple use, fits with existing development model.
- Modules have runtime dependence only.
- Loading is automatic.
- Minimal changes to makefiles, none required to existing source code. Transparent
steps are added before and after linking.
RPX Is an RPL
The only difference between a RPX and a RPL is that RPX is a "main program." That indicates that:
There may be only one SDA in a program, and a RPL may not use an SDA.
RPX may use import libraries that implicitly import symbols from RPLs.
RPX/RPL Build-Time Model
2013/08/06 Removed references to older SDKs.
2013/05/08 Automated cleanup pass.
2013/03/15 Initial version.