Mercurial > hg > Papers > 2019 > anatofuz-prosym
view mindmap.mm @ 78:6656f4c3dfa0
update
author | Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 29 Nov 2018 17:35:18 +0900 |
parents | 8e80522a88bd |
children |
line wrap: on
line source
<map version="1.0.1"> <!-- To view this file, download free mind mapping software FreeMind from http://freemind.sourceforge.net --> <node CREATED="1541413621221" ID="ID_1078505079" MODIFIED="1541414015371" TEXT="CbCを用いたPerl6処理系"> <font NAME="SansSerif" SIZE="12"/> <node CREATED="1541413945985" ID="ID_742780718" MODIFIED="1541413951982" POSITION="right" TEXT="Perl6"> <node CREATED="1541413961044" ID="ID_90704771" MODIFIED="1541413963196" TEXT="Rakudo"> <node CREATED="1541413965243" ID="ID_29989589" MODIFIED="1541413967817" TEXT="NQP"/> <node CREATED="1541413968930" ID="ID_857566655" MODIFIED="1541413971817" TEXT="MoarVM"/> <node CREATED="1541415957248" ID="ID_92063059" MODIFIED="1541415962444" TEXT="現状の実行速度"/> </node> <node CREATED="1541413995166" ID="ID_700487608" MODIFIED="1541413999809" TEXT="Parrot"/> </node> <node CREATED="1541414029013" ID="ID_379657805" MODIFIED="1541414033382" POSITION="right" TEXT="CbC"> <node CREATED="1541414038332" ID="ID_1271482951" MODIFIED="1541414045122" TEXT="Cとの互換性"/> <node CREATED="1541414047128" ID="ID_16933733" MODIFIED="1541414053411" TEXT="CodeSegment"/> <node CREATED="1541414054620" ID="ID_1935230593" MODIFIED="1541414059146" TEXT="goto Statement"/> <node CREATED="1541414062173" ID="ID_7319522" MODIFIED="1541414068087" TEXT="軽量継続"> <node CREATED="1541414076519" ID="ID_1442630319" MODIFIED="1541414084987" TEXT="Stackを消費しない"/> <node CREATED="1541414137421" ID="ID_1727341369" MODIFIED="1541414185766" TEXT="tail call"/> </node> <node CREATED="1541414147487" ID="ID_1727268527" MODIFIED="1541414152425" TEXT="bug"> <node CREATED="1541414158467" ID="ID_1249821290" MODIFIED="1541414178959" TEXT="局所変数のポインタを握ったままgotoするとtail callにならない"/> <node CREATED="1541414235688" ID="ID_977169669" MODIFIED="1541414266382" TEXT="MoarVMのGC避けに使われている局所変数のポインタをstaticに直す"/> </node> <node CREATED="1541414272940" ID="ID_1641303153" MODIFIED="1541414277961" TEXT="実装"> <node CREATED="1541414277962" ID="ID_79004341" MODIFIED="1541414288366" TEXT="llvm"/> <node CREATED="1541414289013" ID="ID_657741995" MODIFIED="1541414291174" TEXT="gcc"/> </node> <node CREATED="1541414190173" ID="ID_913160340" MODIFIED="1541414219383" TEXT="CodeSegmentはコンパイラの基本ブロックに相当する"/> </node> <node CREATED="1541415913985" ID="ID_510826927" MODIFIED="1541415919060" POSITION="right" TEXT="論文"> <node CREATED="1541415922393" ID="ID_1598696025" MODIFIED="1541415927716" TEXT="目的"> <node CREATED="1541415931413" ID="ID_972620811" MODIFIED="1541415946181" TEXT="Perl6の高速実行"/> <node CREATED="1541415976688" ID="ID_22036446" MODIFIED="1541415984500" TEXT="CbCのスクリプト言語への応用"/> </node> <node CREATED="1541416021669" ID="ID_489168922" MODIFIED="1541416027804" TEXT="CbCの概要"> <node CREATED="1541416031396" ID="ID_1551960786" MODIFIED="1541416036012" TEXT="実装状況"/> <node CREATED="1541416038164" ID="ID_1438405102" MODIFIED="1541416043156" TEXT="言語の簡単な説明"/> </node> <node CREATED="1541415929277" ID="ID_1507086124" MODIFIED="1541416010492" TEXT="Perl6の概要"> <node CREATED="1541416045236" ID="ID_1302092984" MODIFIED="1541416050622" TEXT="Parrot"/> <node CREATED="1541416051219" ID="ID_680216126" MODIFIED="1541416054053" TEXT="Rakudo"/> <node CREATED="1541416054289" ID="ID_323375220" MODIFIED="1541416056570" TEXT="NQP"/> <node CREATED="1541416057759" ID="ID_9273494" MODIFIED="1541416060990" TEXT="MoarVM"/> </node> <node CREATED="1541416015337" ID="ID_927499326" MODIFIED="1541416074892" TEXT="CbCによるMoarVMの実装"> <node CREATED="1541416084205" ID="ID_1130596189" MODIFIED="1541416092884" TEXT="code segmentテーブル"/> <node CREATED="1541416094316" ID="ID_64761982" MODIFIED="1541416105997" TEXT="interp.cからの自動生成"/> <node CREATED="1541416130732" ID="ID_1436646867" MODIFIED="1541416135652" TEXT="実装の現状"/> <node CREATED="1541416139886" ID="ID_1498135652" MODIFIED="1541416171404" TEXT="MoarVMのデバッグ"/> </node> <node CREATED="1541416147676" ID="ID_608615655" MODIFIED="1541416177049" TEXT="利点と欠点"/> <node CREATED="1541416156012" ID="ID_1715763123" MODIFIED="1541416158741" TEXT="今後の課題"/> </node> <node CREATED="1541414016260" ID="ID_1263547387" MODIFIED="1541414304201" POSITION="left" TEXT="CbCによるPerl6の実装"> <node CREATED="1541414310736" ID="ID_916213000" MODIFIED="1541414324848" TEXT="MoarByteCodeのディスパッチ"> <node CREATED="1541414343377" ID="ID_1794960109" MODIFIED="1541414354624" TEXT="巨大なcase文"/> <node CREATED="1541414356784" ID="ID_726201724" MODIFIED="1541414379957" TEXT="LABELのテーブル"/> <node CREATED="1541414386844" ID="ID_306559572" MODIFIED="1541414404496" TEXT=" CbCのCodeSegmentのテーブル"/> </node> <node CREATED="1541414842014" ID="ID_567740484" MODIFIED="1541414861047" TEXT="bytecodeに対応するcode segment"> <node CREATED="1541414865747" ID="ID_814602879" MODIFIED="1541414883520" TEXT="インタプリタの状態を格納する構造体"> <node CREATED="1541414896442" ID="ID_1422656613" MODIFIED="1541414902097" TEXT="それへのポインタ"/> <node CREATED="1541414904745" ID="ID_1264721395" MODIFIED="1541414912409" TEXT="レジスタへマッピング"/> </node> <node CREATED="1541415436644" ID="ID_314825177" MODIFIED="1541415467419" TEXT="gears osのinterfaceは使用していない"/> <node CREATED="1541415024122" ID="ID_330058705" MODIFIED="1541415048113" TEXT="cbcのcode segmentの入力引数を使ってレジスタマッピングを管理できる"/> </node> <node CREATED="1541414341726" ID="ID_1487177431" MODIFIED="1541414417373" TEXT="Threaded Code"> <node CREATED="1541414423299" ID="ID_836473525" MODIFIED="1541414431718" TEXT="Perlcc"/> <node CREATED="1541414435571" ID="ID_1940825883" MODIFIED="1541414453032" TEXT="bytecode列をサブルーチンコールの列に置き換える"/> </node> <node CREATED="1541414433507" ID="ID_1575864514" MODIFIED="1541414483864" TEXT="CbCでのThreadec Codeの実装"> <node CREATED="1541414488865" ID="ID_1461050025" MODIFIED="1541414496894" TEXT="cbc_next"/> <node CREATED="1541414498214" ID="ID_195610964" MODIFIED="1541414504070" TEXT="cbc_fixt_next"/> </node> <node CREATED="1541414419339" ID="ID_1335728257" MODIFIED="1541414543288" TEXT="Cのインライン展開"> <node CREATED="1541414547693" ID="ID_659364184" MODIFIED="1541414559968" TEXT="どれくらいの深さまでインライン展開されるか"/> </node> </node> <node CREATED="1541414337374" ID="ID_11025016" MODIFIED="1541414615830" POSITION="left" TEXT="CbC実装の利点と欠点"> <node CREATED="1541414619857" ID="ID_1133837234" MODIFIED="1541414622751" TEXT="利点"> <node CREATED="1541414647681" ID="ID_972123703" MODIFIED="1541414670449" TEXT="VMのコードを分割可能"> <node CREATED="1541414674472" ID="ID_307775379" MODIFIED="1541414690736" TEXT="CbCのCodeSegmentは単なる関数"/> <node CREATED="1541414698360" ID="ID_1846589276" MODIFIED="1541414715320" TEXT="case文labelテーブルは分割できない"/> </node> <node CREATED="1541414721554" ID="ID_1221286296" MODIFIED="1541414743992" TEXT="theread codeをcodeの変更抜きに簡単に実装できる"/> <node CREATED="1541414752126" ID="ID_37293196" MODIFIED="1541414767417" TEXT="threaded codeに対して最適化をかけることが可能"> <node CREATED="1541414819192" ID="ID_1033020793" MODIFIED="1541414828553" TEXT="bytecode レベルと同じ"/> </node> <node CREATED="1541415237612" ID="ID_790139571" MODIFIED="1541415252267" TEXT="moarvmよりdebugしやすい"> <node CREATED="1541415255995" ID="ID_816297483" MODIFIED="1541415276370" TEXT="labelと違って関数名がデバッガから見える"/> </node> <node CREATED="1541416619317" ID="ID_811393660" MODIFIED="1541416660639" TEXT="CbCのABIにJITされたコードを合わせる可能性はある"/> </node> <node CREATED="1541415063228" ID="ID_225388377" MODIFIED="1541415228031" TEXT="欠点"> <node CREATED="1541415069642" ID="ID_533817131" MODIFIED="1541415076071" TEXT="CbCコンパイラがbuggy"> <node CREATED="1541415079422" ID="ID_1044393091" MODIFIED="1541415095025" TEXT="gccとllvmのアップデートに追従する必要がある"/> <node CREATED="1541415100937" ID="ID_609944534" MODIFIED="1541415120866" TEXT="taill callの強制がかなり難しい"/> <node CREATED="1541415202235" ID="ID_1151226334" MODIFIED="1541415223114" TEXT="現状だとnqpがビルドできない?"/> </node> <node CREATED="1541415132139" ID="ID_279142255" MODIFIED="1541415140313" TEXT="CbCがメジャーではない"/> <node CREATED="1541415157875" ID="ID_1565993570" MODIFIED="1541415190810" TEXT="code segmentでの不要なスタック操作命令を完全に排除できていない"/> <node CREATED="1541415231921" ID="ID_1712589110" MODIFIED="1541415312458" TEXT="C levelに戻る際に環境付きで戻る必要がある"/> </node> </node> <node CREATED="1541414617793" ID="ID_782240881" MODIFIED="1541415363082" POSITION="left" TEXT="MoarVMのデバッグ" VSHIFT="-122"> <node CREATED="1541415368783" ID="ID_1979041331" MODIFIED="1541415397139" TEXT="命令履歴をCbCとラベル実装の命令履歴を比較する"/> </node> <node CREATED="1541415622350" ID="ID_479435127" MODIFIED="1541415627931" POSITION="left" TEXT="今後の課題"> <node CREATED="1541415631627" ID="ID_1779514222" MODIFIED="1541415639121" TEXT="コンパイラのbug fix"/> <node CREATED="1541415646929" ID="ID_717536026" MODIFIED="1541415667291" TEXT="簡単な例題が動いた"> <node CREATED="1541415668063" ID="ID_293158844" MODIFIED="1541415675396" TEXT="テストの何%。。"/> </node> <node CREATED="1541415678504" ID="ID_1540520024" MODIFIED="1541415688186" TEXT="self build"/> <node CREATED="1541415689135" ID="ID_992629371" MODIFIED="1541415698273" TEXT="threaded code compiler"/> <node CREATED="1541415702936" ID="ID_1828933472" MODIFIED="1541415715180" TEXT="GCの制御"> <node CREATED="1541415776036" ID="ID_1306202452" MODIFIED="1541415784654" TEXT="GCの最適化"/> </node> <node CREATED="1541415792261" ID="ID_779643203" MODIFIED="1541415798355" TEXT="regexの最適化"/> <node CREATED="1541415812077" ID="ID_587379399" MODIFIED="1541415828459" TEXT="rakudo compilerからcbcのコードを直接生成する"> <node CREATED="1541415829993" ID="ID_1858274685" MODIFIED="1541415836811" TEXT="llvmでコンパイルする"/> </node> <node CREATED="1541415846430" ID="ID_1375113859" MODIFIED="1541415854235" TEXT="最新版への追従"> <node CREATED="1541415871528" ID="ID_1262253798" MODIFIED="1541415904441" TEXT="interp.cからのcbc-interp.cbc自動生成"/> </node> </node> </node> </map>