※この文書は現在翻訳途中です
原文のPDF
http://forums.parallax.com/showthread.php?83682-Propeller-Guts-Download
翻訳者: @ksksue
各Cogは512 x 32-bit レジスタ領域を持っています。最後の特殊レジスタ16個を除いて、この512個のレジスタはすべてRAMです。
RAM領域は実行コード、データ、変数のために使われます。最後の16個のレジスタはHUB、IOピン、ローカルCOGペリフェラルのインタフェースとして使われます。
一つのCOGがブートされたとき、そのCONGのRAM記憶領域はメインメモリからシーケンシャルにロードされます。そしてその特殊レジスタはゼロにクリアされます。
ロードされた後、そのCOGで$000から命令の実行がスタートします。リセットが起こるか、自身もしくは他のCOGによってストップかリブートがかかるまで、コードが実行され続けます。
I/Oピンや消費電力といったすべての影響をキャンセルするため、
ひとつのCOGがストップされたときもしくはリセットが起こった時、すべてのCOGのI/Oレジスタは即座に0クリアされます。
下の表はCOG内の特殊レジスタの概要です。
Address | Name | Access | Description |
$000-$1EF | - | リード/ライト | 汎用RAM |
$1F0 | PAR | リードオンリー* | ロングアドレスパラメータ |
$1F1 | CNT | リードオンリー* | システムカウンタ |
$1F2 | INA | リードオンリー* | P31〜P0の入力値 |
$1F3 | INB | リードオンリー* | P63〜P32の入力値** |
$1F4 | OUTA | リード/ライト | P31〜P0の出力値 |
$1F5 | OUTB | リード/ライト | P63〜P32の出力値** |
$1F6 | DIRA | リード/ライト | P31〜P0の方向制御 |
$1F7 | DIRB | リード/ライト | P63〜P32の方向制御** |
$1F8 | CTRA | リード/ライト | カウンタA制御 |
$1F9 | CTRB | リード/ライト | カウンタB制御 |
$1FA | FRQA | リード/ライト | カウンタA周波数 |
$1FB | FRQB | リード/ライト | カウンタB周波数 |
$1FC | PHSA | リード/ライト | カウンタAフェーズ |
$1FD | PHSB | リード/ライト | カウンタBフェーズ |
$1FE | VCFG | リード/ライト | ビデオコンフィグレーション |
$1FF | CSCL | リード/ライト | ビデオスケール |
*ソースレジスタとしてのみアクセス可能(例 MOV DEST, SOURCE) ** 現状未実装。予約領域。
512COGは32bit命令を実行します。
COGのスタートとストップを管理する3つのHUB命令があります。
COGID D `このCOG番号をDへ保存 COGINT D `Dに従ってCOGを初期化 COGSTOP D `COG番号Dをストップ
COGID命令でDへCOG番号を保存します。この命令は、そのCOGをストップまたはリスタートさせるために、COGのID(全8個)を知るときに使用します。
COGINIT命令はCOGをスタートもしくはリスタートさせます。レジスタ D は
この3つのフィールドを決定する情報を含んでいます。
スタートするCOGのPARレジスタのビット[15..2]をD[31..18]へ書き込みます。