mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-12-06 07:12:28 +01:00
Updated Developer Information (markdown)
parent
4805227cab
commit
6437dd3b09
|
|
@ -28,8 +28,18 @@ Best wishes and happy coding!
|
|||
|
||||
## Information
|
||||
|
||||
#### Size of PS3 basic types
|
||||
Checked with [PSL1GHT](http://psl1ght.com).
|
||||
####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](http://repo.or.cz/w/official-gcc.git/blob_plain/c2c80e70905bc2e5dedf8352588fc8cb10e3ec7d:/gcc/config/rs6000/rs6000.md) 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 ](https://www-01.ibm.com/chips/techlib/techlib.nsf/techdocs/852569B20050FF778525699600741775) 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](http://stackoverflow.com/questions/199333/best-way-to-detect-integer-overflow-in-c-c) is what we should consider.
|
||||
|
||||
|
||||
####Misc
|
||||
(Some of this information can be deleted, or at least properly organized).
|
||||
* `sizeof(char)` = 1 (= 8 bits)
|
||||
* `sizeof(short)` = 2
|
||||
* `sizeof(int)` = 4
|
||||
|
|
@ -38,11 +48,4 @@ Checked with [PSL1GHT](http://psl1ght.com).
|
|||
* `sizeof(size_t)` = 4
|
||||
* `sizeof(void*)` = 4
|
||||
|
||||
####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](http://repo.or.cz/w/official-gcc.git/blob_plain/c2c80e70905bc2e5dedf8352588fc8cb10e3ec7d:/gcc/config/rs6000/rs6000.md) 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 ](https://www-01.ibm.com/chips/techlib/techlib.nsf/techdocs/852569B20050FF778525699600741775) 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](http://stackoverflow.com/questions/199333/best-way-to-detect-integer-overflow-in-c-c) is what we should consider
|
||||
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.
|
||||
Loading…
Reference in a new issue