Below are links to home pages of researchers working on programming language theory, design, implementation, and related areas. Disclaimer: this list is not exhaustive! Please let me know if you would like to be added to this list, or if you would like an existing entry modified or deleted. Back to the language research page Related Pages The SEL-HPC list of home pages of functional language resea
この記事はひとりでCPUとエミュレータとコンパイラを作る Advent Calendar 2017の25日目の記事です。 いよいよ最終日。 まず復習を兼ねて、今までの記事を振り返りながら、C言語から半導体までCPUの中を歩く。 最後に自作コンパイラ、自作エミュレータ、自作CPUを結合し、再帰関数でフィボナッチ数を計算する。 25日間の復習 アドベントカレンダーの 初日の記事 に 「普段目にする抽象的なプログラムコードから、CPU内の電圧変動が想像できるようになりたい。」 と書いたので、今までの記事を見返しつつ、C言語から半導体までレイヤーを降りてみる。 C言語からアセンブラまで (18日目-24日目) C言語のサンプルコード int main () { int a ; a = 3 ; return 0 ; } これを1週間かけてアセンブラに変換した。 作ったコンパイラのリポジトリはこれ。
[ 大堀研 | 教育内容 | 講義関連資料 | コンパイラ, ] コンパイラ(東北大学 工学部 電気情報物理工学科/情報知能システム総合学科,2020年度) 授業予定(講義室,休講,試験日等) GoogleClassroomn(クラスコード:rggdbvc)によるオンデマンド授業。 一部対面授業を実施(木曜2時限 電201 (南講義棟)) アナウンス 評価 各講義での課題 + 最終課題 を総合的に評価 コンパイラ記述言語 本講義では,コンパイラ記述言語として SML# を使用する. コンパイラ講義スライド (2020年10月1日) 講義内容に関する詳細な資料である.この内容に従って授業を行う.各自ダウン ロードして参考にすること. LR構文解析の原理,大堀 淳, コンピュータ ソフトウェア,Vol. 31 (2014) No. 1 p. 1_30-1_42 講義の中心の一つである「LR構文
CPU実験が終わって半年ですが、忘れる前にやったことを書き残しておこうと思います。 並列化ーー CPU実験 全体 4人程のチームで、自作CPU、コンパイラ、アセンブラ、シュミレータ等を作り、最終的には高級言語(mincamlというOcamlのサブセット)で書かれたプログラム(レイトレーシング)を実行速度を競います。CPU実験の詳細は検索すると結構出てくるかと思います。 レイトレプログラムの出力結果 自班の最終成果 『レイトレプログラムをマルチコアで並列実行する』ということをやりました。結論から言うとこれがかなり上手いこといって、歴代最速記録を大幅に(1/2位?)更新することができました。 具体的には記録は以下の通りです。詳しくは*1 4.666948 s(7コア、逐次実行と比べ演算順序が変わり得る) 5.193502 s(6コア、演算順序が変わらない) *実験の条件も年々良くなっているので
コンパイラを作ってみたいと思っていても、アセンブリ言語はよくわからない。 パーサーみたいなコードは書いたことがあるけれど、コード生成の処理はさっぱりだ。 実行ファイルをバイナリエディターで見るとかなにそれ怖い。 そんな私なのですが、LLVMに興味を持ち始めています。 SwiftやRust、あるいはEmscriptenなど、近年注目されている言語やコンパイラ技術の中枢にはLLVMがあります。 アセンブリはよく分からなくてもLLVMを使いこなせるようになれば、マルチプラットフォームで実行ファイルを生成できる言語処理系を作るのではないか。 コンパイラ作ってみたいな、LLVMを使ってみようかなと思っている今日このごろです。 ところが、いざLLVMを勉強しようと思ってもどこから始めればいいかよく分かりませんでした。 マニュアルは巨大で読む気が起きないし、リファレンスを見てもさっぱりです。 雰囲気はわ
PGIトップ › PGI コンパイラの概要 › PGI Community Edition 概要 ソフテックは、PGI 製品の公認正規代理店です PGI Community Edition PGI Community Edition は、マルチコア CPUs と NVIDIA tesla GPUs を対象とした NVIDIA 社の PGI Fortran、C、C++ コンパイラの新しいリリースを無償で利用できるライセンス・ソフトウェアです。コンパイラ機能には、OpenACC、OpenMP、CUDA Fortran の機能も含まれ、有償製品である PGI Professional 製品に含まれる機能が使用できます。言語コンパイラには、CPU 用の最適化コンパイル機能と NVIDIA GPU アクセラレータ用のコンパイル機能の両方が含まれております。CPU 用のコンパイル機能だけを使用すること
この記事は Kobe University Advent Calendar25日目の記事です。 低レイヤー技術(後述)をこれから学びたい人向けの入門記事です。 自身の経験を踏まえ、より多くの人達にこのレイヤーに興味を持ってほしくて書きました。 決して卒論がやばくてAdvent calendarのネタが作れなかったわけでは(ry なぜこんな記事を書いたか いわゆるシステムプログラミングのような低レイヤー(と言って差し支えない)ジャンルって一体何から始めれば良いのかいまいちピンと来ないし、何が面白いのかも分からないと思われている事が多いと思います。 にもかかわらず低レイヤーの魅力や学び方の指針みたいな物を示した、いわゆる入門記事ってかなり少ないんですよね。 本記事はこれからシステムプログラミングを始めたい方や、既にかじってみたが中々先が見えてこない、将来何の役に立つのか不安という方達に読んでい
この記事は言語実装 Advent Calendar 2016の9日目ために書かれました。 最近僕はcall-by-needに関連する研究をしており、気分を理解するためにcall-by-needを採用した言語のインタプリタをStandard MLで実装したりしました。今回はその時の事でも記事にしておきましょう。 Call-by-needとは? Call-by-needとは、評価戦略の一種です。評価戦略と言えばcall-by-valueとcall-by-nameが有名でしょう。 Call-by-valueは最も右側のredexから簡約する評価戦略で、例えば(λx. x x) ((λx. x) (λx. x))は (λx. x x) ((λx. x) (λx. x)) → (λx. x x) (λx. x) → (λx. x) (λx. x) → λx. x と簡約されます。ちなみにλの中は簡約
このエントリはEx CyberAgent Developers Advent Calendar 2016 - Adventar1日目の記事です。 元サイバーエージェントの人がわいわいやります。 κeenです。二年弱勤めたサイバーエージェントを退職したのでその旨について。 サイバーエージェントの思い出 サイバーエージェントに興味をもつきっかけになったのも入社することになったのも学生の頃からずっと参加し続けていたLispMeetUpでした。 LispMeetUpでは長らく会場としてCAのセミナールームを使わせてもらっていました。 そこでエンジニアに対して気軽に施設を提供するCAや社員の@potix2さんを知って、そのまま@potix2さんの手引でCAに入社する運びとなりました。 「面接でLispは口にしない方が良い。100%落ちる。」なんて言ってた割にはLisp繋りで入社しました。 Cyber
[Update: I wrote another post on this topic that may explain the underlying issues more clearly.] Obviously I’m not serious: compilers are bad at solving high-level math problems and also there is good reason to believe this theorem cannot be disproved. But I’m getting ahead of myself. Recently — for reasons that do not matter here — I wanted to write C code for an infinite loop, but where the com
オブジェクトレイアウト 通常のHaskellの値(代数的データ型および関数)と、未評価の計算を表すサンクは、全てポインタで参照される。ポインタが指す先は通常はヒープ上のオブジェクトだが、静的セクションに置かれていることもある。いずれにしてもレイアウトは同じで、以下の一般形をとる。 オブジェクトの先頭1ワードは静的領域へのポインタ(infoポインタ)で、この値を評価(関数なら適用)するためのコード(entry code)と、このオブジェクトの種類に関する情報を集積したレコードを指している。なお、GHCにおける1ワードはポインタと同じ大きさ、つまり32ビットOSなら32ビット、64ビットOSなら64ビットである。これはIntの精度と同じでもある。 代数的データ型 代数的データ型の評価済みの値では、infoポインタが構築子の種類を表し、その後に構築子の引数を入れるスロットが続く。したがって、N引
PPLサマースクール2016「商用Java処理系の研究開発」のパート2です. http://ppl.jssst.or.jp/index.php?ss2016 Java言語処理系の実装について詳説する.まずJava仮想マシンの概要について述べ,その主要な構成要素として,クラス管理とインタープリタ,ヒープ管理とガベージコレクション,スレッド管理と同期機構,JITコンパイラとの連携,などについて説明する.性能改善のために行った各種手法についても触れる. 他のパート 1 Javaの登場と発展 http://www.slideshare.net/Tamiya_Onodera/java-66081108 2 Java仮想マシンの実装技術 http://www.slideshare.net/KiyokuniKawachiya/java-66003903 3 Java Just-In-Timeコンパイラの
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く