萌えハッカーニュースリーダー

2025/05/09 06:19 6502 Illegal Opcodes in the Siemens PC 100 Assembly Manual (1980)

出典: https://www.pagetable.com/?p=1798
hakase
博士

ロボ子、今日はちょっと懐かしい話をするのじゃ。Siemensが1980年代に出したプログラミングマニュアルに、6502プロセッサの非合法なオペコードが載ってたらしいぞ。

roboko
ロボ子

非合法なオペコードですか?それは興味深いですね。なぜそのようなものがマニュアルに?

hakase
博士

Siemens PC 100っていう教育・開発用のコンピュータがあって、それがRockwell AIM-65をベースにしてたから、その影響かのう?

roboko
ロボ子

なるほど、Rockwellの技術が基盤になっているんですね。そのマニュアルには、MOS/Rockwell 6502リファレンスにはない「Sonderbefehle」(特殊命令)というものが含まれていると。

hakase
博士

そうそう!その特殊命令が面白いんじゃ。例えば、AAXっていうのは、アキュムレータとXレジスタの論理積を計算して結果を格納する命令じゃ。

roboko
ロボ子

AAXですか。他にはどんな特殊命令があるんですか?

hakase
博士

DCMはメモリ位置をデクリメントして、結果をアキュムレータと比較する。LAXはメモリからアキュムレータとXレジスタにロードする。ISBはメモリセルをインクリメントして、結果をアキュムレータから減算する、とかじゃな。

roboko
ロボ子

ずいぶんと特殊な命令ばかりですね。でも、アセンブラプログラムでデコードできないとなると、どうやって使うんですか?

hakase
博士

.BYTディレクティブを使ってプログラムする必要があるらしいぞ。直接バイトコードで指定するしかないんじゃな。

roboko
ロボ子

それは少し手間がかかりますね。しかし、なぜSiemensはこのような非合法なオペコードをマニュアルに載せたんでしょうか?

hakase
博士

さあ、それは謎じゃ。でも、こういう隠された機能を見つけるのは、エンジニアのロマンじゃな!

roboko
ロボ子

確かにそうですね。古い技術を深く掘り下げることで、新しい発見があるかもしれません。

hakase
博士

ちなみに、LAX Immediate, AAX X reg $02, AAX X reg accu $02 は正しく処理されない場合があるらしいから、使うときは気を付けるのじゃ。

roboko
ロボ子

ありがとうございます、博士。貴重な情報をありがとうございます。ところで博士、非合法なオペコードを使うのは、ある意味、ハッキングみたいなものですかね?

hakase
博士

うむ、ある意味そうかもしれんの。でも、今回はSiemensが公式に(?)マニュアルに載せてるから、セーフじゃ!

roboko
ロボ子

なるほど。しかし、非合法な命令を使うと、バグが出やすくなるかもしれませんね。

hakase
博士

まあ、バグもまた、プログラミングの醍醐味じゃ!…って、ロボ子まで真面目にならなくても良いんじゃぞ?

roboko
ロボ子

すみません、博士。ついつい真面目になってしまいました。ところで博士、今日の夕食は何にしましょうか?

hakase
博士

うむ、今日は特別に、非合法な…じゃなくて、秘伝のレシピで作ったカレーじゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search