タグ

compilerに関するtanakaBoxのブックマーク (93)

  • SECDマシン 実装と動きとその他もろもろについて

    sm支付宝号购买【☆出售网址:fk578。com☆】【☆购买网址:fk578。com☆】抖音小号自动发号

    SECDマシン 実装と動きとその他もろもろについて
  • アセンブラをゼロから作って自作コンパイラをアセンブルするまで(日記)

    GNU Assembler互換(サブセット)のアセンブラをGo言語でフルスクラッチで作ってみました。 開発22日目で自作Goコンパイラ(をセルフホストしたときに出力される20万行のアセンブリ)をアセンブルすることに成功しました。 どうやって作ったかというと、小さいコードを GNU Assembler (以下 as) にわせて出力されたバイナリを観察する、を繰り返して中のロジックを推定し再現しました。as の実装は見ていません。(一瞬見たけど巨大すぎて何もわからなかった) アセンブラ自作は、やってみるとコンパイラ自作よりだいぶ簡単でハマりポイントも少ないので、学習テーマとしてはおすすめです。2箇所ほど難所(命令エンコーディングのルールを理解するのと、ジャンプ命令の最適化)がありましたがそれ以外はさくさく楽しく作れました。 作ってみた結果、アセンブリ言語の理解が深まったのはもちろんのこと、E

    アセンブラをゼロから作って自作コンパイラをアセンブルするまで(日記)
  • コンパイラ - 共立出版

    書は、プログラミングやコンピュータに興味を持つ者が、コンパイラの原理と構造、さらにその開発方法を基礎から理解するためのテキストである。 コンパイラの理解は、コンピュータの原理やプログラムの実行のしくみを理解する基礎である。そこで書では、チューリングらによって確立された計算可能性の理論と万能計算機の構築方法を基礎として、コンパイラを含むプログラミング言語処理系の構築原理とその構造を解説する。これらの理解を基に、コンパイラ実現のための主要な基盤技術を、その原理とその背後にある考え方を含め習得することを目標とする。この考え方を理解することができれば、従来難解と受け止められているLR構文解析や多相型の型推論などの技術も見通し良く習得できる。 これらのコンパイラの原理と構造の理解に加えて、先端的言語コンパイラの開発方法を習得するために、実際に実行可能なインタープリタと抽象機械へのコンパイラを開発

    コンパイラ - 共立出版
  • The MIR C interpreter and Just-in-Time (JIT) compiler | Red Hat Developer

    For the past two years I've worked on a project implementing a universal lightweight Just-in-Time (JIT) compiler known as MIR. The cornerstone of the project is a machine-independent medium-level intermediate representation (MIR). A big part of the project consists of code that compiles C source code into MIR. Because MIR can be interpreted and just-in-timed, I easily extended this C-to-MIR compil

    The MIR C interpreter and Just-in-Time (JIT) compiler | Red Hat Developer
  • IBM、Linux x86環境向けCOBOL「IBM COBOL for Linux on x86 1.1」の提供を開始

    「IBM COBOL for Linux on x86 1.1」は、COBOLアプリケーション構築のための開発環境で、最適化されたCOBOLコンパイラとCOBOLランタイムライブラリが含まれる。 Enterprise COBOL for z/OSと同等の、高度な最適化テクノロジに基づいており、Linux x86上で利用可能なビジネスクリティカルなCOBOLアプリケーション開発のためのパフォーマンスおよびプログラミング機能を備えている。 COBOL 1985に準拠し、COBOL 2002または2004の機能を選べる。また、「ANSI INCITS 23-1985」および「ISO 1989:1985」のモジュールをサポートする。 なお、「IBM COBOL for Linux on x86 1.1」はIBM CICS TX on Cloud 11にも含まれており、クラウド環境でのミッションクリ

    IBM、Linux x86環境向けCOBOL「IBM COBOL for Linux on x86 1.1」の提供を開始
  • 無料になったIntel compilerをCentOS8にインストールしてみる - Qiita

    インテルのoneAPIのニュースとかは見ている方も多いかと思いますが、この流れで一番大きなインパクトは今まで高嶺の花だったIntel compilerが2021年になってから実質的に無料になってしまったということです。こうでもしないとNVIDIA1には対抗できないってことなんでしょうけど、このディープラーニングの思わぬ副産物に対して従来型HPCユーザーも恩恵にあずからずにいるわけにはいかないでしょう。 とりあえずCentOS8へのyum (dnf)を使ったインストールはとても簡単だったので、手順を紹介することにします。とりあえず家のガイドはこちらから。やるのはyumのリポジトリを作ってinstallコマンドを打つだけです(root権限で行います)。 yumでBase kitを入れる /etc/yum.repos.d/oneAPI.repoを以下の内容で作ります [oneAPI] name

    無料になったIntel compilerをCentOS8にインストールしてみる - Qiita
  • CS 6120: The Self-Guided Course

    Syllabus Schedule Lessons Zulip Blog CS 6120: Advanced Compilers: The Self-Guided Online Course CS 6120 is a PhD-level Cornell CS course by Adrian Sampson on programming language implementation. It covers universal compilers topics like intermediate representations, data flow, and “classic” optimizations as well as more research-flavored topics such as parallelization, just-in-time compilation, an

  • UNIXのCコンパイラ(cとpcc)のソースコード リンク集 - Qiita

    UNIXと一緒に配布されていたCコンパイラであるcとpccのソースコードへのリンクをUNIXとBSDのバージョン毎に並べてみました。 また関連情報をまとめてみました。 Ritchie's pdp11 C compiler c は Dennis Ritchie が開発したCコンパイラです。 prestruct-c (1972) structを実装する前のCコンパイラ https://github.com/mortdeus/legacy-cc/tree/master/prestruct UNIX V2 (1972) last1120c (1972) PDP-11/20対応をやめるときに保存した版 https://github.com/mortdeus/legacy-cc/tree/master/last1120c UNIX V3 (1973) UNIX V5 (1974) UNIX V6 (1

    UNIXのCコンパイラ(cとpcc)のソースコード リンク集 - Qiita
  • Introduction to Compilers and Language Design

    A compiler translates a program written in a high level language into a program written in a lower level language. For students of computer science, building a compiler from scratch is a rite of passage: a challenging and fun project that offers insight into many different aspects of computer science, some deeply theoretical, and others highly practical. This book offers a one semester introductio

  • Introduction to X86-64 Assembly for Compiler Writers

    by Prof. Douglas Thain Copyright (C) 2015 The University of Notre Dame This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. (Last updated 9-Nov-2015) Note: This material has been incorporated into Chapter 10 of the free online textbook Introduction to Compilers and Language Design. Overview This is a brief introduction to X86-64 assembly language novice

  • 低レイヤを知りたい人のための Cコンパイラ作成入門

    はじめに このオンラインブックは執筆中です。完成版ではありません。フィードバックフォーム このには一冊のに盛り込むにはやや欲張りな内容を詰め込みました。書では、C言語で書かれたソースコードをアセンブリ言語に変換するプログラム、つまりCコンパイラを作成します。コンパイラそのものもCを使って開発します。当面の目標はセルフホスト、すなわち自作コンパイラでそれ自身のソースコードをコンパイルできるようにすることです。 このでは、コンパイラの説明の難易度が急に上がりすぎないように、様々なトピックを書全体を通じて次第に掘り下げていくという形で説明することにしました。その理由は次のとおりです。 コンパイラは、構文解析、中間パス、コード生成といった複数のステージに概念的に分割することができます。よくある教科書的アプローチでは、それぞれのトピックについて章を立てて解説を行うことになりますが、そのよう

    tanakaBox
    tanakaBox 2018/11/02
    変数まで作った。boxnos/0cc - https://github.com/boxnos/0cc
  • Cコンパイラをスクラッチから開発してみた(日記)

    以前に8ccというCコンパイラをゼロからひとりで開発していたときのログです。40日でセルフコンパイルできるところまで到達しています。日付はすべて2012年です。コードとヒストリはすべてGitHubで見れます。 3月4日 というわけでコンパイラを作っているわけだけど、1000行くらい書いたらそれなりに動き始めてきた。こんなのも動くし: int a = 1; a + 2; // => 3 こういうのも通る。 int a = 61; int *b = &a; *b; // => 61 文字列は文字の配列として扱っていて、配列をポインタに成り下げる振る舞いも実装しているので、こういうのも通る。関数呼び出しもある。 char *c= "ab" + 1; printf("%c", *c); // => b 前回もこのあたりはがんばって実装したからここまで作るのはわりと単純作業かも。二回目だから配列とか

    Cコンパイラをスクラッチから開発してみた(日記)
  • JIT Compilation Techniques

    How to Use Multiple GitHub Accounts Git is a popular tool for version control in software development. It is not uncommon to use multiple Git accounts. Correctly configuring and switching Git accounts is challenging. In this article, we show what Git provides for account configuration, its limitations, and the solution to switch accounts automatically based on a project parent directory location.

    JIT Compilation Techniques
  • peg/leg

    peg/leg — recursive-descent parser generators for C peg and leg are tools for generating recursive-descent parsers: programs that perform pattern matching on text. They processes a Parsing Expression Grammar (PEG) [Ford 2004] to produce a program that recognises legal sentences of that grammar. peg processes PEGs written using the original syntax described by Ford; leg processes PEGs written using

    tanakaBox
    tanakaBox 2014/05/12
    peg-markdownで使われてる。
  • よくわからないので実装して理解するRubyのメソッド解決順序 - Qiita

    いままであまり気にする機会がなかったので、深く考えたことなかったのだけど、Rubyのメソッド解決順序はどのようになっているかということについて、疑問に思いいろいろ試してみた。ソースを読めばいいんだろうけど、いろいろ試しながら実装していけば理解できるだろうと思い立ち、なぜかJavaScriptで実装してみた。 メソッド解決順序(MRO) メソッド解決順序とは、hoge.fugaのようにメソッド呼び出しをしたときに どのクラスから順番にmethod名を探すかという順序のこと。 これらに影響を与えそうな要素は以下 継承 モジュールのinclude モジュールのprepend 特異クラス 特異メソッド method_missing こんなものだろうか。 クラスオブジェクトに対して、ancestorsメソッドを呼べば、 どのような順序でmethodの探索がなされるかがArrayとして帰ってくる。 c

    よくわからないので実装して理解するRubyのメソッド解決順序 - Qiita
  • Learn C • Build Your Own Lisp

    Build Your Own Lisp Learn C and build your own programming language in 1000 lines of code! If you're looking to learn C, or you've ever wondered how to build your own programming language, this is the book for you. In just a few lines of code, I'll teach you how to use C, and together, we'll start building your very own language. Along the way we'll learn about the weird and wonderful nature of Li

    tanakaBox
    tanakaBox 2014/04/08
    見た感じlispじゃないけど・・・繋がらないので後で。
  • 数学初心者のための「型システム入門」入門 - 廻る技術の覗き穴

    社内で「TaPLで殴りあう会*1」が開催されるというので、型システム入門(通称TaPL: Types and Programming Languages)を購入したものの、内容が難しくて序盤からまったくと言っていいほど読み進めることができませんでした。 型システム入門 −プログラミング言語と型の理論− 作者: Benjamin C. Pierce,住井英二郎,遠藤侑介,酒井政裕,今井敬吾,黒木裕介,今井宜洋,才川隆文,今井健男出版社/メーカー: オーム社発売日: 2013/03/26メディア: 単行(ソフトカバー) クリック: 68回この商品を含むブログ (7件) を見る しかし、読めないままにしておくのは悔しいし、内容はとても面白そうなので、やはりちゃんと読めるようになりたい。 そこで基礎的な書籍とWebで情報収集してから再度挑戦したところ、なんとか読み進められるようになりました。 監

    数学初心者のための「型システム入門」入門 - 廻る技術の覗き穴
  • QCC - A Quick C Compiler

    What is this ? This is a tiny C compiler, I wrote it in a very restricted dialect of OCaml. It is in the same family as otcc but will work for the x86_64 architecture. It will generate dynamically linked ELF files for the 64bits architecture x86_64 (AMD64 or IA-32e). It has no intermediate language and generates code as it parses the C source file. This makes it very fast, unsafe and unoptimizing.

  • つくって学ぶプログラミング言語 RubyによるScheme処理系の実装

    プログラミングをより深く理解するための近道は、プログラミング言語を実装してみること。SchemeのサブセットをRubyで実装していくことで、プログラムはどう実行されるのか、その基がはっきり分かります。 ※書はCC BYにより配布されています。上記の「買い物かごへ」ボタンからは有償で購入できます。無料で入手したい場合は、下記リンクよりダウンロードしてください。なお、有償版も無償版も内容は同一です。 EPUB版PDF版内容紹介プログラムは書けても、その基礎となっている計算機科学(コンピュータサイエンス) の理解があやふやな人を、著者は多く見てきました。プログラミングに自信があるという人が、もう一歩先に進める道を示したいというのが、この文書を書き始めた動機です。 この文書を読むことで次の効果が得られることを期待しています。 プログラミング言語とは何かを深く理解することで、プログラミングのレベ

    つくって学ぶプログラミング言語 RubyによるScheme処理系の実装
    tanakaBox
    tanakaBox 2013/04/27
    電子版はFreeらしい。かなりシンプル。
  • 48時間でSchemeを書こう - Wikibooks

    Web上にあるほとんどのHaskellチュートリアルは言語についてのマニュアルのような教え方をしようとしているようです。それらには言語の文法、概念が少し載っていて、読者に対話環境でいくつかの簡単な関数を作るように指示します。よく機能する有用なプログラムの書き方は大抵最後にまわされるか、そもそも省かれていたりします。 このチュートリアルは違う方針を取ります。コマンドライン引数解析から始めて、完全に機能するR5RS Schemeのかなり大きなサブセットの実装まで進みます。道すがら、Haskellの持つI/O、mutable state、dynamic typing、エラー処理、そして構文解析機能を学びます。このチュートリアルを終える頃には、あなたはHaskellとScheme両方がかなり良くわかるようになっているはずです。 このチュートリアルの対象読者は主に以下の2種類です。 LispかSch