Gyro X v1.0

Contents

What is Gyro X?

Gyro X is an extension of Gyro for Rotor for MacOS X, the original Gyro is only supported on the PC. Gyro X is an addition to Gyro and the sources can still be compiled on a PC – we don’t think we broke anything (we’ve tested, but less often than on MacOS X).

Installation

Gyro X is distributed as a patch file in a gzipped tar archive along with this file. For convenience two distributions are available with different patch files. All patches require at least Rotor v1, sscli_20021101.tar.gz (what a surprise!). The available patches are:

Above “already installed” also means “download the files to install” – i.e. you don’t actually needed to have built it yet.

Note: no patch is provided to convert a Gyro v1 installation to a Gyro X one. If you patch Rotor with Gyro v1 and then the Panther patch you will get conflicts, if you apply the Panther patch first and then Gyro v1 you will silently loose some of the Panther changes. This means that if you have patched Rotor with Gyro v1 and the Panther patch then you have something which is broken. Also moving from Gyro v1 to Gyro X involves removing a lot of redundant files, which either means a huge patch file or a shell script to clean them up. Therefore we only provide Gyro X patchers for Rotor Jaguar and Rotor Panther. If you’ve tried to add Gyro v1 start again from Rotor Jaguar (sscli v1).

Install and Build

To keep things tidy it is best to store the patch archive somewhere other than the root of your Rotor build, in these instructions we assume the directory above your sscli directory is used. To install the last patch above:

  1. If you have not yet built Rotor unpack it: tar xzvf sscli_20021101.tar.gz
     
  2. Unpack the archive using: tar xzvf gyrox_jaguar_v1.tgz
     
  3. This should give you two files: gyrox.html (this file) and gyrox_jaguar_v1.patch
     
  4. Move to your sscli directory: cd sscli
     
  5. Apply the patch: patch -p1 <../gyrox_jaguar_v1.patch
     
  6. Now you should be able to build Gyro X: ./buildall -c

Adjust above for the Panther patch in the obvious way!

Sources of other files:

Known Problems

The code is bad.

Rotor was originally designed to target the x86, a cpu with so few registers they are not worth counting. The PowerPC has plenty of registers and uses them as part of its standard calling sequence. Rotor for MacOS X follows the proper PowerPC calling sequence but the FJit is hardly optimal. Also the “second level” of macros was not done for the PowerPC, so the general code is less optimised than for the x86.

Adding Gyro to this setup doesn’t improve matters…

See also the Problems & Future Work sections of the gyro.html document in Gyro v1, most of that still applies.

Future work

Address the Known Problems, time permitting…

Feedback

Please send all feedback, including queries and bug reports regarding Gyro X to kahu AT zoot DOT net DOT nz. Queries and bugs relating to Gyro itself should be sent to gyro@microsoft.com

Acknowledgements

The support of Microsoft Research Cambridge is gratefully acknowledged. The project was undertaken as a “summer project” by Oliver Hunt and led by Nigel Perry.


Last Modified: 15/2/06