はてなブックマークアプリ

サクサク読めて、
アプリ限定の機能も多数!

アプリで開く

はてなブックマーク

  • はてなブックマークって?
  • アプリ・拡張の紹介
  • ユーザー登録
  • ログイン
  • Hatena

はてなブックマーク

トップへ戻る

  • 総合
    • 人気
    • 新着
    • IT
    • 最新ガジェット
    • 自然科学
    • 経済・金融
    • おもしろ
    • マンガ
    • ゲーム
    • はてなブログ(総合)
  • 一般
    • 人気
    • 新着
    • 社会ニュース
    • 地域
    • 国際
    • 天気
    • グルメ
    • 映画・音楽
    • スポーツ
    • はてな匿名ダイアリー
    • はてなブログ(一般)
  • 世の中
    • 人気
    • 新着
    • 新型コロナウイルス
    • 働き方
    • 生き方
    • 地域
    • 医療・ヘルス
    • 教育
    • はてな匿名ダイアリー
    • はてなブログ(世の中)
  • 政治と経済
    • 人気
    • 新着
    • 政治
    • 経済・金融
    • 企業
    • 仕事・就職
    • マーケット
    • 国際
    • はてなブログ(政治と経済)
  • 暮らし
    • 人気
    • 新着
    • カルチャー・ライフスタイル
    • ファッション
    • 運動・エクササイズ
    • 結婚・子育て
    • 住まい
    • グルメ
    • 相続
    • はてなブログ(暮らし)
    • 掃除・整理整頓
    • 雑貨
    • 買ってよかったもの
    • 旅行
    • アウトドア
    • 趣味
  • 学び
    • 人気
    • 新着
    • 人文科学
    • 社会科学
    • 自然科学
    • 語学
    • ビジネス・経営学
    • デザイン
    • 法律
    • 本・書評
    • 将棋・囲碁
    • はてなブログ(学び)
  • テクノロジー
    • 人気
    • 新着
    • IT
    • セキュリティ技術
    • はてなブログ(テクノロジー)
    • AI・機械学習
    • プログラミング
    • エンジニア
  • おもしろ
    • 人気
    • 新着
    • まとめ
    • ネタ
    • おもしろ
    • これはすごい
    • かわいい
    • 雑学
    • 癒やし
    • はてなブログ(おもしろ)
  • エンタメ
    • 人気
    • 新着
    • スポーツ
    • 映画
    • 音楽
    • アイドル
    • 芸能
    • お笑い
    • サッカー
    • 話題の動画
    • はてなブログ(エンタメ)
  • アニメとゲーム
    • 人気
    • 新着
    • マンガ
    • Webマンガ
    • ゲーム
    • 任天堂
    • PlayStation
    • アニメ
    • バーチャルYouTuber
    • オタクカルチャー
    • はてなブログ(アニメとゲーム)
    • はてなブログ(ゲーム)
  • おすすめ

    猛暑に注意を

『qiita.com』

  • 人気
  • 新着
  • すべて
  • 自作コンパイラ基盤の話 - Qiita

    60 users

    qiita.com/uint256_t

    これは、言語実装 Advent Calendar 2020 19日目の記事です。 最近は、コンパイラやインタプリタなどの言語処理系や、それに類するものを作る人が増えてきています。(私の周りだけかもしれませんが。) しかし、もう一歩進んで、コンパイラ基盤を作ってみたという話はあまり聞きません。 コンパイラ基盤は、それの対象とするアーキテクチャについてや、それ自体の使い勝手を考えるのが非常に面白いものです。また、コンパイラ基盤を作る中で、コンパイラや計算機自体についてより深く学ぶことが出来ます。 この記事では、私が開発中のコンパイラ基盤を例として、コンパイラ基盤について語っていきます。 そもそもコンパイラ基盤とは コンパイラ基盤と言えば、近年色々な所で目にするのがLLVMです。 LLVMを使うことで、コンパイラの複雑で面倒な部分を避けつつ、コンパイラを構成することができるようになりました。 下

    • テクノロジー
    • 2020/12/19 09:34
    • LLVM
    • Compiler
    • コンパイラ
    • あとで読む
    • rust
    • programming
    • c++
    • Qiita
    • 最適化コンパイラへのいざない (4) プログラムの構造 - Qiita

      3 users

      qiita.com/uint256_t

      記事一覧 はじめに マルチパスコンパイラ 定数に関する最適化 プログラムの構造(この記事) SSAとか...? ... TL;DR 基本ブロック,制御フローグラフ,支配木など. 対象読者 コンパイラの内部構造について興味がある方 コンパイラに関して精通している方(批評お待ちしております) プログラムの構造 最適化に関する記事を書く上で,最も重要ともいえるプログラムの構造についてまだ解説していませんでした. すでに定数畳み込みなどについて解説してしまっていますが,ここで一度立ち止まって,プログラムがどんな構造を持っているのかを考えます. また,世の中には関数型や命令型など様々なプログラミングパラダイムがありますが,これ以降は基本的に命令型プログラムについて扱います. 関数型ではデータの流れ方がはっきりしていることが多く,処理(=最適化)も行いやすいことが多いです.ですが,私自身,あまり関数型

      • テクノロジー
      • 2020/08/18 21:05
      • 最適化コンパイラへのいざない (2) マルチパスコンパイラ - Qiita

        21 users

        qiita.com/uint256_t

        記事一覧 はじめに マルチパスコンパイラ (この記事) 定数に関する最適化 プログラムの構造 対象読者 コンパイラの内部構造について興味がある方 コンパイラに関して精通している方(批評お待ちしております) ワンパスコンパイラ 突然ですが,初めてコンパイラを作るのであれば,大抵次のような構造になると思います. 図中の赤い部分は,どんなにシンプルなコンパイラでも含まれているだろうという意味を込めたものです.字句解析や中間言語生成はそれぞれ構文解析やコード生成と区別化がつかなくなっている場合もあるかと思います. ここで図中に,一つのパスと書かれているのが気になった方もいるかと思います. パス プログラムのとある表現(ソースコードや中間言語)は,ある操作を施されて別の表現へと移っていきます.この時,ある操作やそれを行うためのルーチン群のことをパスと呼びます. この説明だと,ASTが中間言語へ変換さ

        • テクノロジー
        • 2020/08/14 22:43
        • qiita
        • あとで読む
        • 最適化コンパイラへのいざない (1) - Qiita

          11 users

          qiita.com/uint256_t

          記事一覧 はじめに(この記事) マルチパスコンパイラ 定数に関する最適化 プログラムの構造 ..... 対象読者 コンパイラの内部構造について興味がある方 コンパイラに関して精通している方(批評お待ちしております) はじめに ある程度コンパイラについての学習が進み,小さな自作言語などを作れるようになると,こんな疑問が浮かぶのではないでしょうか. 「世の中のコンパイラって,こんなのだったっけ?」 コンパイラの作り方が解説されている日本語の記事は,最近なら簡単に見つかります.ですが,それらの大半は所謂ワンパスコンパイラの作り方について解説しており,より高度な,具体的には gcc や clang 等の実用的コンパイラが行っている最適化というものについての記述が乏しいです. (もちろん,ドラゴンブックや虎本を読めば最適化について書いてありますが,初心者が簡単に手を出せるものではないように思えます.

          • テクノロジー
          • 2020/08/14 22:43
          • Compiler
          • あとで読む
          • mem2regを解説してみる - Qiita

            6 users

            qiita.com/uint256_t

            はじめに この記事は,まだmem2regのことをふんわりとしか理解していない人が書いています.間違いの指摘などお待ちしております. また,この記事内では解説にLLVM-IRの前提知識を必要とします.(alloca, load, store, use-def chain などが何なのかわかっていればOK.) mem2reg とは mem2regはLLVMのPassの一つで,可能な限りメモリアクセスをレジスタアクセスへと変換します. LLVMのPassとは言いますが,単にメモリアクセスをレジスタアクセスへと変換する機構のことだと思っていただければOKです. mem2reg は大まかに何をするのか ここからの解説は,主にこのあたりのコードに沿って進めていきます. レジスタへと昇格できる alloca を集める. どんなalloca? → load, storeからのみアクセスされていて,アドレス

            • テクノロジー
            • 2020/05/08 18:01
            • ブラウザがJavaScriptを直接サポートしない世界 - Qiita

              162 users

              qiita.com/uint256_t

              TL;DR WASMって凄いね.JavaScript処理系すら実装できるんだって. ならブラウザはWASMだけをサポートすれば楽なんじゃないかな. という考察記事です. 経緯 私は少し前からRustでJavaScript処理系を書いています.(まだまだ機能不足ですが) ある日,ふと思いました.*Rustで書いてるんだからWASMに変換するのも楽なんじゃないか?*と. 面白そうなので,試してみたわけです. 意外と面倒だった RustからWASMへと変換する方法を説明した記事は,調べればいくらでもでてきます.無論そのとおりに手を動かしてみるわけです. しかし,いざやってみるとコンパイラに結構文句を言われます.考えてみれば当たり前ですが,libcなんて使っていたらWASMには変換できません. なので余分なコードは削り,WASMに変換できるようコードを書き直しました. すると,すんなりWASMに変

              • テクノロジー
              • 2019/04/03 20:12
              • javascript
              • あとで読む
              • WebAssembly
              • rust
              • wasm
              • ブラウザ
              • JVMことはじめ その1: クラスファイル - Qiita

                6 users

                qiita.com/uint256_t

                この記事は何? 最近趣味でJVMを作り始めたので,その過程で得た知見とかを書いていく記事です. 今回は,クラスファイルに焦点を当てていきます. 参考文献 参考文献は一番最後に書くものだと思ってたけど,最初に書いても良いんじゃないだろうか. Java Virtual Machine Specification - まさしくJVMの規格書.一番信頼できるし,わからないことがあればとりあえずここを見る. Javaのクラスファイルをjavapとバイナリエディタで読む - 軽くクラスファイルの内部に触れてみようとして,最初に見つけた記事.とてもわかりやすかった. クラスファイルの構造 規格より抜粋. ClassFile { u4 magic; u2 minor_version; u2 major_version; u2 constant_pool_count; cp_info constant_po

                • テクノロジー
                • 2018/12/28 18:23
                • jvm
                • Java
                • [メモ] JavaScriptエンジンを作る話 - Qiita

                  62 users

                  qiita.com/uint256_t

                  Rapidusの進捗を記していく。逐次更新 どんなJSエンジンを目指してるのか 自作ブラウザ(Naglfar)に組み込めるようなもの ↑でも当分はNodeJSみたいなのを目指すと思う (それ単体で使えるような物、という意味) JITに対応し、速い (LLVM使う?) 8/11追記: Tracing JITが部分的に動いた 課題 グローバル変数の呼び出し、遅い ネストした関数、実装してない 実装しました VMとVMのコード生成に関するコードのテストを書いてない (最近書き始めた) よく考えたら、字句解析器がコメントに対応してない 対応 参照渡しできない 進捗 日数は、Gitでコミットした日を数えてます。(7/1 7/2 7/5 とコミットしていたら、7/5は3日目としてカウント) 1日目 字句解析器がほぼ完成

                  • テクノロジー
                  • 2018/07/10 18:26
                  • javascript
                  • *javascript
                  • コード
                  • git
                  • あとで読む
                  • メモ
                  • Webブラウザの作り方 - Qiita

                    143 users

                    qiita.com/uint256_t

                    この記事は何? ほとんどタイトル通りです。 順番に読み進めていけば簡単なWebページが表示できるレベルのWebブラウザを作ることができるように執筆していく予定です。 またアルゴリズムだけをなるべくわかり易く解説していきたいので、記事内で紹介するコードは誰でも読める程度の擬似コードです。 自分で実装したい方は、面倒かもしれませんがそれぞれの言語に翻訳してください。 必要な知識としては: HTML/CSSが困らない程度に読める やる気 これだけです。 (あとこれはただの宣伝ですが、個人的にWeb ブラウザを作ってるので(http://github.com/maekawatoshiki/naglfar) スターをつけてもらえると喜びます) いろいろとパースする Webページは基本的にHTMLで書かれていますね。あとCSSも。 HTMLもCSSもそのままではただの文字列であって扱いづらいので、パー

                    • テクノロジー
                    • 2018/05/13 19:01
                    • ブラウザ
                    • あとで読む
                    • browser
                    • アルゴリズム
                    • programming
                    • web
                    • html
                    • qiita
                    • ヒトでもわかるWebブラウザ自作入門 - Qiita

                      62 users

                      qiita.com/uint256_t

                      この記事は何? こんにちは。現在私は趣味でWebブラウザを実装しようとしています。 この記事にはその中で気づいたことをまとめていきたいと思います。 ブラウザがやること ブラウザは壮大で、複雑で、本当に様々なことをしています。(少なくとも、BlinkやServoのコードを見た私はそう思いました) そのためこの章ではシンプルに、ブラウザがどのように画面のレンダリングを行うのかに重点を置いて説明していこうと思います。 HTML/CSSの解析 Webページはほとんどの場合、当たり前ですがHTMLで書かれています。そんなHTML文書を、ブラウザは扱いやすくするためにツリー構造にします。これが俗に言うDOM(Document Object Model)です。 例えば、以下のようなコードがあったとしましょう。 画面にはhello, (赤い文字で)world!!と出力されますね。 以上のようなHTMLを、

                      • テクノロジー
                      • 2018/04/01 03:19
                      • ブラウザ
                      • HTML
                      • あとで読む
                      • browser
                      • css
                      • programming
                      • web
                      • Saved For Later
                      • 人でもわかる型推論 - Qiita

                        52 users

                        qiita.com/uint256_t

                        追記: この記事を書いてから早2年弱。今は数式のほうがわかりやすいなあと思うようになりました。 これは何? この記事は、最近 Hindley Milner (Algorithm W) 型推論を理解したばかりの私が、型推論のことをなるべくわかりやすく解説するものです。 簡略化したOCamlのようなコードが登場します。 わかりやすさ重視で書いていくつもりなので、専門用語(自由変数とか)はあまり出てきません。 間違いなどあったらコメントしていただけると幸いです。 まずは単相から ここからは図を使って説明していきます。(ビジュアルなほうがわかりやすいハズ) とても簡単な例 以下にとても簡単なコードを示します。 見ればわかりますが、xの型はintですね。 ですが、どのようにしてintだとわかったのでしょうか。 すでにわかっていることを書き出しだしてみました。リテラルの右肩を見てください。 1の型は当

                        • テクノロジー
                        • 2017/12/20 08:11
                        • functional
                        • 型推論
                        • あとで読む
                        • プログラミング

                        このページはまだ
                        ブックマークされていません

                        このページを最初にブックマークしてみませんか?

                        『qiita.com』の新着エントリーを見る

                        キーボードショートカット一覧

                        j次のブックマーク

                        k前のブックマーク

                        lあとで読む

                        eコメント一覧を開く

                        oページを開く

                        はてなブックマーク

                        • 総合
                        • 一般
                        • 世の中
                        • 政治と経済
                        • 暮らし
                        • 学び
                        • テクノロジー
                        • エンタメ
                        • アニメとゲーム
                        • おもしろ
                        • アプリ・拡張機能
                        • 開発ブログ
                        • ヘルプ
                        • お問い合わせ
                        • ガイドライン
                        • 利用規約
                        • プライバシーポリシー
                        • 利用者情報の外部送信について
                        • ガイドライン
                        • 利用規約
                        • プライバシーポリシー
                        • 利用者情報の外部送信について

                        公式Twitter

                        • 公式アカウント
                        • ホットエントリー

                        はてなのサービス

                        • はてなブログ
                        • はてなブログPro
                        • 人力検索はてな
                        • はてなブログ タグ
                        • はてなニュース
                        • ソレドコ
                        • App Storeからダウンロード
                        • Google Playで手に入れよう
                        Copyright © 2005-2025 Hatena. All Rights Reserved.
                        設定を変更しましたx