AmigaOS

Console

Mobile

Windows


PLATFORM:
Amiga, Mac version planned
STATUS: Version 1.24 (Amiga)
BETA STATUS: Version 2.0b (Amiga)

DESCRIPTION:
Optimized 680x0->PowerPC source level assembly porter and powerful 680x0 backwards compatible PPC assembly language for the Amiga platform
Introduction

PPC680x0 is a source level converting utility, which means that you can now convert any kind of Motorola 680x0 source codes directly to PowerPC source codes. It uses several methods to optimize the output code and therefore adapts it to work optimal with the pipelining- and parallel instruction system of the PowerPC family.

PPC680x0 is a program that should help out coders in a relatively easy but powerful way. The user can actually treat the PowerPC CPU as a very big Motorola 68060 CPU. Nearly all the 68060 instructions are supported, as well as many 68030-specific instructions.

Imagine yourself a 68060 with 32 general purpose registers, 32 Floating Point registers, new instructions, more addressing modes, Quad-word (64-bits) operations, etc. etc... It is now possible with PPC680x0: You can actually port 680x0 source-codes with it, and program the PowerPC at assembly level in an expanded backwards compatible 680x0 language. Additionally, you can insert any kind of native PPC code.
The converted output file is a source code which can be edited using any text editor. PPC680x0 has been made compatible with the most common reassemblers and outputs Storm PowerAsm compatible code.






















PPC680x0 Bridging System

PPC680x0s 'bridging' system is important to stay upwards compatible with new versions of AmigaOS. PPC680x0 offers the ability to detect 680x0 native library-calls and convert them to a single PPC macro. Therefore any program written in PPC680x0 can be patched to run on a next-generation native PPC AmigaOS by modifying this single macro. PPC680x0 takes care of everything else.


 
 
How is it done?

Internally, PPC680x0 uses a complex mathematical model of the 680x0 and PowerPC CPUs. The 680x0 CPU is split up in elements and finally the elements are put together to form the architecture of the PowerPC CPU. Backwards-referencing is used to decode 'blocks' of code: This means that the conversion is not just line-dependent, but also block- (128 lines) and file-dependent.
Thanks to the mathematical model, many new addressing modes are possible. For example, complex modes such as:

move.q #$1234567890abcdef,d21 (64-bits move)

and

add.w r1,d8 (add PPC register r1 to d8)
sub.l ([label1,label2.l,label3.b*16],d9.w*32,d12),d3

can be used. Also, a new instruction set with an 's' in front of every instructon name can be used to access PPC specific features. For example:

sadd d0,a1,d3
means d0+a1=d3. Additionally, you can also insert blocks of native PPC code as well as AltiVec code.

How does the porting work?

The porting of source codes has been made easy using PPC680x0: Select the input file, output file and options and press the convert button. Assemble the file with Storm PowerAsm, modify the few alignment errors when available, assemble again and run the file.
There are a few predefined instructions to be placed in the input source code, although this can be done automatically since version 2.0. When these instructions are converted, they will automatically allow the code to run under WarpOS. There are two example files attached to this page to show the steps of converting a file from 68k to PowerPC. One example shows how to convert a source code, the other one shows how to convert the executable of a program. The programs selected as the example are the original 'freemem.s' file supplied with HiSoft's DevPac 3 assembler, The Guru (available from Aminet) and the RCTDemo from Maxon Computer GmbH.

Features list
























New features planned:

* Full AltiVec control commands and assembler
* Multiple output CPU cores
* ColdFire MAC (Multiply-Accumulate) Instructions
* Apple Mac support
* PPC Native version (already under construction)

Disclaimer: All trademarks used on this page remain property of their respective owner