added OE bit description

Bigpet 2014-04-08 16:25:14 -07:00
parent 921835ca5f
commit 551c05af86
1 changed files with 7 additions and 2 deletions

@ -14,7 +14,6 @@ Best wishes and happy coding!
* [SPU Assembly Language Specification (Version 1.7 / July 18, 2008)](https://www-01.ibm.com/chips/techlib/techlib.nsf/techdocs/EFA2B196893B550787257060006FC9FB/$file/SPU_Assembly_Language_Specification_1.7.pdf)
* [SPU Instruction Set Architecture (Version 1.2 / January 27, 2007)](http://cell.scei.co.jp/pdf/SPU_ISA_v12.pdf)
### RSX
* RSX Commands: [http://www.psdevwiki.com/ps3/RSXFIFOCommands](http://www.psdevwiki.com/ps3/RSXFIFOCommands) (Partially incomplete)
* Ask other developers.
@ -37,4 +36,10 @@ Checked with [PSL1GHT](http://psl1ght.com).
* `sizeof(long)` = 4
* `sizeof(long long)` = 8
* `sizeof(size_t)` = 4
* `sizeof(void*)` = 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