«前の日(12-26) 最新 次の日(12-28)» 追記

一往確認日記


2016年12月27日

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

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

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

昨日の1バイトに続いて2バイト読み込む部分です。

https://gyazo.com/0bc402c9ca11fd8f20fd5b3a7fc138a1

program_counterが現在読み込もうとしている位置になります。 PLCはワード単位で格納しているので、バイト位置を出すために2で割ってprog_index[0]に入れています。 prog_index[1]には偶数か奇数かを入れていています。

ここまでは1バイトの時と同じです。

偶数の場合はそのままwordで読み込んだ値をFD0に入れて返しますが、奇数の場合は(IF分の中)prog_index[0]の位置にあるデータの下位8bitとprog_index[0]+1の位置にあるデータの上位8bitをくっつけてFD0に入れて返します。

https://gyazo.com/87b06c7c0e8093fd995861cdb3be271c