«前の日記(2016年12月21日) 最新 次の日記(2016年12月26日)» 編集

一往確認日記


2016年12月22日 [長年日記]

_ Escalator - 命令のデコード(1)

Escalatorというのは、各種PLCがメーカーや機種毎にプロジェクトデータが異なるため互換性がなく、移植するのが大変なのを解決しようとするものです。

ここのescalatorのカテゴリーを見てもらえると今までの経緯を見てもらうことができます。

では実際にEscalatorのプログラムを読み込んでいくところを説明します。

P10のfetch 1 byteはプログラムデータを1byte読み込むサブルーチンになっています。 (これはまた後で説明します)

読み込むとsub_argsからの配列に入ります。 1byteなので先頭のsub_args[0]にコードがはいっています。 これをoperandに一旦移してoperand_bitsから始まるbitデバイスに展開しています。

https://gyazo.com/4811abf0f6e093682284a872d5c5b1a1

命名をデコードする際、多量の条件分岐が発生しますが、bit展開しておくとラダーのORとANDで表現できる様になり見通しが良くなるかなということで、使用しています。

その分、無駄に256bitも使用してしまっています。