ず@沖縄

BASICMASTER

MC6800のプログラミングテクニック(13) 多バイトの+1/-1操作をinc/decで行う

6800にはメモリを直接操作する命令があり、便利に使える。下記の11種がそれだ。 CLR/COM/NEG/DEC/INC/ROL/ROR/ASL/ASR/LSR/TSTシフト・ローテート命令は多倍長の乗除算に使えるし、他の命令もちょっとした...
BASICMASTER

chibicc compiler を6800向けに改造する (3) ++ と —

ポストデクリメントとプリインクリメントという概念を初めて知ったのは、古のCPUであるSC/MP(スキャンプ) IIのデータシートであった。当時のパソコン雑誌には、なぜか、SC/MP IIの記事が多数掲載されていた。しかしSC/MP IIに関...
BASICMASTER

MC6800のプログラミングテクニック(12) 多バイト整数の比較

MC6800には豊富な分岐命令があって、1バイトの数値の大小を比較するのは簡単である、という話を前に書いた。 6800の分岐命令(ベーシックマスター開発 その30) | ず@沖縄そのときに、2バイトの比較はやや面倒であると書いたが、多バイト...
BASICMASTER

chibicc compiler を6800向けに改造する (2) 関数呼び出しの仕組み

去年の末から、 rui314 (Rui Ueyama) さんの rui314/chibicc: A small C compiler を MC6800向けに改造しています。今回は関数呼び出しの仕組みのメモです。 zu2/chibicc-68...
BASICMASTER

chibicc compiler を6800向けに改造する (1)

去年の末から、 rui314 (Rui Ueyama) さんの rui314/chibicc: A small C compiler を MC6800向けに改造しています。簡単なプログラムが動作するようになったので、公開しました。 zu2/...
BASICMASTER

6800用のコンパイラを探して – CC6303 (3)(ベーシックマスター開発 その45)

6800用のコンパイラを探して – CC6303 (2)(ベーシックマスター開発 その44) | ず@沖縄の続き。今回はCC6303の生成するオブジェクトについてについてのメモです。 zu2/CC6303: A C compiler for...
BASICMASTER

MC6800のプログラミングテクニック(11) シフト操作の高速化

複数回の左右シフト操作を効率化したい。例えば、AccABを左に8bitシフトする場合は、TBAが使える。LSLB/ROLA が4cycle必要なので、普通に書くと32cyc,16bytes必要。(8回繰り返して 8bit左シフト) lslb...
BASICMASTER

6800用のコンパイラを探して – CC6303 (2)(ベーシックマスター開発 その44)

6800用のコンパイラを探して – Fuzix/CC6303(ベーシックマスター開発 その22) | ず@沖縄にて、CC6303について書いたのだけど、事実誤認があったので訂正。CC6303が、6502用のCコンパイラであるCC65を68系...
BASICMASTER

Fuzix-Compiler-Kitの6800用コンパイラ(9) peep hole optimizer(2)

EtchedPixels/Fuzix-Compiler-Kit: Fuzix C Compiler ProjectのCコンパイラ付属のpeephole optimizer (のぞき穴的最適化プログラム)の話の続き。簡単な最適化でどれぐらい速...
BASICMASTER

Fuzix-Compiler-Kitの6800用コンパイラ(8) peep hole optimizer(1)

EtchedPixels/Fuzix-Compiler-Kit: Fuzix C Compiler ProjectのCコンパイラには、peephole optimizer (のぞき穴的最適化プログラム)が付属している。このoptimizer...
BASICMASTER

6800の未定義命令(1) 歴史と概要

現代のCPUは、定義されていない命令(利用されていないオペコード)を実行すると、未定義命令エラーが検出されてOS trapが発生する。けれども、往年のコンピューターでは、定義済みの命令と同じ動作をしたり、似たようで違う動作をしたり、はたまた...
BASICMASTER

MC6800のプログラミングテクニック(10) PSHX はできないけど、PSHSはできる

6800でプログラムを書いていて困るのは、IXレジスタの加算減算命令がないことと、IXレジスタがPUSH/POPできないことである。加算ができない弱点は1976年の富士通MB8861で解決されたのだけど、この改良はモトローラや日立にフィード...
スポンサーリンク