llvm-2.4のMSILのコードは長らく更新されていないのです(´ー`)
llvm-2.4でMSILのバイナリ吐かせてみようと思って llc -march=msil してみるわけですが、abortしてしまいますのでちょっと調べてみました(´ー`)いくらかbcのバイナリに対して未実装の部分があるようです。
HANDLE_OTHER_INST(42, PHI , PHINode ) // PHI node instruction
HANDLE_OTHER_INST(45, UserOp1, Instruction) // May be used internally in a pass
HANDLE_OTHER_INST(46, UserOp2, Instruction) // Internal to passes only
HANDLE_OTHER_INST(48, ExtractElement, ExtractElementInst)// extract from vector
HANDLE_OTHER_INST(49, InsertElement, InsertElementInst) // insert into vector
HANDLE_OTHER_INST(50, ShuffleVector, ShuffleVectorInst) // shuffle two vectors.
HANDLE_OTHER_INST(51, ExtractValue, ExtractValueInst)// extract from aggregate
HANDLE_OTHER_INST(52, InsertValue, InsertValueInst) // insert into aggregate
HANDLE_OTHER_INST(53, VICmp , VICmpInst ) // Vec Int comparison instruction.
HANDLE_OTHER_INST(54, VFCmp , VFCmpInst ) // Vec FP point comparison instr.
特に上記のうち42,45,50についてはX86では対応していますので、対応しておくのが無難と思われます。lib/Target/MSIL/MSILWriter.cpp に実装を追加する必要がありまして、1168行目でassertが出ないように(つまり case でdefaultを通らないように)してやらないといけないわけです。で、おそらくその部分を実装すれば何とかなると思われます。
#がしかし(;´Д`)今はそんなのやってる暇無いので放置
OpenCOBOLの最近の動向(´ー`)
日本国内では動きがほとんど無いのですが、ぽつぽつとキーワードの露出は増えていますね。OpenCOBOLと他言語のリンクなどの記事も見られるようになってきましたし。
海外では、Luaやlibdbi、Tcl/Tkなどの言語とのリンクも進んでいます。またOpenCOBOL自身もGLOBALキーワード周辺の実装などの動きがあったようです。その他CALL/CANCEL周辺の動作について安定性が増すようです(>1.1)
その周辺に関しまして週1くらいのペースで現在のメンテナ他数名でIRCで検討が進んでいます。
弊社内ではOpenCOBOLとPHPの連携は以前から試していましたが、perlとの連携も出来るようになり様々な応用を検討しています。OPEN、CLOSE、READ、STARTの代わりにperlで作成したsubを呼び出す仕様で色々と面白いことを考えています。
Eclipse用のpluginなども実装検討中です~ヽ(´ー`)ノ