超初心者のためのPropellerアセンブリ言語入門
原題:Assembly Language Primer for the Absolute Beginner


状態:この文書は現在翻訳中です

原文:assembly_09.pdf

翻訳者:@kama_AGE

対象読者:アセンブラ超初心者

注意:訳は意訳の部分も多くあります。また、原文の目次には存在せず本文には存在する章も、この文書の目次には入っています。

はじめに

(@kama_AGE 翻訳中)
2進数の世界へヨウコソ!

コンピュータは複雑に見えるにもかかわらず、実際には2つのことしかしません:

  • 数を足すか、それらに対して論理演算を行う
  • コピーする

さらに、0と1の2種類の数しか理解しません。これらは「ON」「OFF」、「SET」「RESET」、「HIGH」「LOW」などとして、知られています。
どちらか片方が起こっている間は、もう一方は起こりません。

中心となる概念

(@kama_AGE 翻訳中)
どのようなアセンブリ言語でも、プログラミングを始める前に、ある程度のバックグラウンドとなる知識をカバーしておかなければなりません。

計算機数学の大部分は、普通の数学に似ています。
ほとんどのトラブルは、いくつかの用語に加えて、異なる「数の表現」を学んでおかなければならないことに起因します。

さらに、私たちは、基礎的な数学コンピューターが行うカバーに必要とします。
より高いレベルことをするためにより大きな構造を組織するためにLEGO玩具がどのようにしてともに結合するかとは異ならない方法の中で、私たちが使用するのは、この基礎的な数学です。

さあ飛び込んでいきましょう!

数の表現

コンピュータの数のサイズ

共通のコンピュータの数値単位

計算機の概念

計算機数学

足し算(ADD)

キャリーあり足し算

区切り

余りの数

引き算

掛け算と割り算

10進数から2進数への変換

負の数・符号つき数値

数の操作の例

プロペラCPU特有の概念

(@kama_AGE翻訳中)
基本的な数学と必要な用語をカバーし、命令、メモリ、フラグ、そしてそれらの対話に取り組めるようになりました。

クロック

システムカウンタ

ハブ

データのアライメント

コグ

コグ0

命令

リトルエンディアン

PropellerCPUは、リトルエンディアンです。

数値とインデックス

RAM内の命令

データ(文字列、ルックアップテーブル、など)

プログラムカウンタ

SPIN

レジスタって何?

定義済み定数

これらは、何かのアドレスを指すラベルです。
例えば、「CNT = $1f1」といったものです。
以下に、COGメモリレジスタを識別する定数のテーブルがあります:

PAR$1f0読み取り専用 Boot Parameter
CNT$1f1読み取り専用 System Counter
INA$1f2読み取り専用 Input States for P31 - P0
INB$1f3読み取り専用 Input States for P63- P32
OUTA$1f4読み取り/書き込み Output States for P31 - P0
OUTB$1f5読み取り/書き込み Output States for P63 – P32
DIRA$1f6読み取り/書き込み Direction States for P31 - P0
DIRB$1f7読み取り/書き込み Direction States for P63 - P32
CTRA$1f8読み取り/書き込み Counter A Control
CTRB$1f9読み取り/書き込み Counter B Control
FRQA$1fA読み取り/書き込み Counter A Frequency
FRQB$1fB読み取り/書き込み Counter B Frequency
PHSA$1fC読み取り/書き込み Counter A Phase
PHSB$1fD読み取り/書き込み Counter B Phase
VCFG$1fE読み取り/書き込み Video Configuration
VSCL$1ff読み取り/書き込み Video Scale

これらは単に文脈のために提示されています、このあと、各定数があなたのために何をするか知る必要があります。

ソフトウェアの用意

GEAR(Propeller デバッガ/エミュレータ)

Setupを構築

Setupを検証

アセンブリ言語コードの解剖

And now, the code: (finally!) ※ごめん訳が分からん@kama_AGE

Propeller Toolからコードを取ってくる

GEARでシミュレーション

プログラムセクション

アセンブリプログラム詳細

命令0:mov

命令1:mov

命令2:add

命令3:waitcnt

命令4:xor

命令5:jmp

プログラムに関しての議論

ビット論理と操作演算子 ※Manipulation operators は操作演算子でいいのかな@kama_AGE

真理値表

OR(ビットOR)

キャリーはどう?(パリティ)

ビットマスク

他の論理演算の真理値表

XOR

AND

ANDN

NOT

補遺A

アセンブリ言語プログラムのパージング

補遺B

Propellerメモリアドレッシング

暗黙アドレッシングの特殊な場合について


トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-12-19 (月) 03:17:57 (4513d)