これは言語実装 Advent Calendar 2016の4日目の記事です。 こちらは一般的なプログラミング言語の処理系とは目的も作り方も全く異なる言語処理系について、勉強して実際に作ってみようという企画となります。 今回は動作記述からハードウェア記述言語へとコンパイルする高位合成コンパイラがテーマです。元々はこの1回で単純なコンパイラの実装までを完結させるつもりでしたが、実装が間に合いませんでしたので、カレンダーの空いている日をもう1日頂いて1日目を勉強編、2日目を実装編という事にしたいと思います。 今回は、知人に紹介を頂きました以下の論文を勉強する事にしました。結構typoや組版崩れが多いので読む際は注意してください。回路設計の分野は非常に広範なのでもちろんこの論文の手法が全てではありません。 Chaiyakul, Viraphol, and Daniel D. Gajski. Ass
![高位合成コンパイラを作ってみたい① - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/52e6910f72d8a150f2bc646c536b00ca10c235a5/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Fadvent-calendar-ogp-background-f625e957b80c4bd8dd47b724be996090.jpg%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9JUU5JUFCJTk4JUU0JUJEJThEJUU1JTkwJTg4JUU2JTg4JTkwJUUzJTgyJUIzJUUzJTgzJUIzJUUzJTgzJTkxJUUzJTgyJUE0JUUzJTgzJUE5JUUzJTgyJTkyJUU0JUJEJTlDJUUzJTgxJUEzJUUzJTgxJUE2JUUzJTgxJUJGJUUzJTgxJTlGJUUzJTgxJTg0JUUyJTkxJUEwJnR4dC1jb2xvcj0lMjMzQTNDM0MmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkNtaWRkbGUmcz0zY2RmYzUyNDRjOWY5NTlkMjc4ODczNTBiYjYwNzAwZQ%26mark-x%3D142%26mark-y%3D151%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwOV90aWVzJnR4dC1jb2xvcj0lMjMzQTNDM0MmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1lYTlkZGFlMmVlMDA5ZTVhOGVmNzJkZDY1Mzg3ZjE4Ng%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3D4f6fc288b60c1377855eac9795a15aaa)