一往確認日記 |
2020年12月20日 [長年日記]
_ PLCでmruby (4) ニーモニック変換に方針転換
mrubyをPLCで動かすにはmrubyのVirtual Machineを実装すればできると思っていましたが、前回の出力をみるとmrubyのニーモニックからラダーのニーモニックに変換するのが手取り早い気がします。
ニーモニック変換器を作ることを当面の目標としましょう。
前回の出力を再掲します。
% mrbc --verbose a.rb
00001 NODE_SCOPE:
00001 local variables:
00001 a
00001 NODE_BEGIN:
00001 NODE_ASGN:
00001 lhs:
00001 NODE_LVAR a
00001 rhs:
00001 NODE_INT 1 base 10
irep 0x7f897b4059c0 nregs=3 nlocals=2 pools=0 syms=0 reps=0 iseq=8
local variable names:
R1:a
file: a.rb
1 000 OP_LOADI_1 R2
1 002 OP_MOVE R1 R2 ; R1:a
1 005 OP_RETURN R2
1 007 OP_STOP
これなら、ラダーで下の様な感じで作れれば置き換えができそうです。(ニーモニックは特定のPLCではなく雰囲気です)
ただ、クラスなど絡んでくるとそんなに簡単ではなく、難しいことは予想されます。
LD ON
@SET SCOPE
LD SCOPE
MOV #1, R2
MOV R2, R1
RST SCOPE