Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Developer Information

Raul Tambre edited this page · 7 revisions
Clone this wiki locally

If you are wondering about websites and documents in order to gather information about certain parts of the PlayStation 3 here is a nice list to start with. Probably more things should be added here, but for now it is a good compilation of useful sources. If what your are looking for isn't below, remember that Google is your friend. If it's not, remember that other RPCS3 developers are your friends too. Ask them!

Best wishes and happy coding!


Links

Cell

RSX

HLE

Information

OE bit

Some instructions contain an optional OE(overflow excpetion) flag. We currently do not implement those versions of the instructions. For example we emulate add, addze, subfme but not addo, addzeo, subfmo which are just the prior operations with the OE flag set.

This flag writes to the OV and SO (overflow and summary overflow) bits of the XER (Fixed-Point Exception Register) register. The reason why it's not implemented is that the GCC code emitter does not use these instructions and so we haven't found any PS3 software that uses it.

If we find some software that has some handwritten assembly that use those instructions we'll need to implement it (or just for completeness). A good reference for XER bits can be found in PowerPC Microprocessor Family: The Programmer's Reference Guide chapter 1.3 and other linked references.

For the implementation of the interpreter it would probably be best to refrain from x86 assembly or compiler intrinsics like __readeflags to determine a overflow. Probably something from the answers to this SO question is what we should consider.

Misc

(Some of this information can be deleted, or at least it should be properly organized).

  • sizeof(char) = 1 (= 8 bits)
  • sizeof(short) = 2
  • sizeof(int) = 4
  • sizeof(long) = 4
  • sizeof(long long) = 8
  • sizeof(size_t) = 4
  • sizeof(sys_memory_container_t) = 4
  • sizeof(void*) = 4

Reading from invalid addresses / Trying to execute code from invalid addresses (e.g. stack) / Trying to write to invalid addresses (e.g. functions) makes the application exit on real PS3s.

Something went wrong with that request. Please try again.