タグ

2021年1月9日のブックマーク (5件)

  • こわくないLLVM入門! - Qiita

    対象読者 LLVMを勉強し始めたけど何からして良いのかわからない方 アセンブリがちょっとわかる 目標 LLVMの基的な文法がわかるようになる 環境 Mac Mojave 10.14.6 LLVM 8.0.0 clang 8.0.0 (trunk 348837) LLVMってなに...? LLVMは一言で言えば、プログラミング言語を作成する為の基盤です。プログラミング言語はコンパイラによってバイナリに変換され実行することができます。それを言い換えれば、自分が考えたプログラミング言語のコンパイラを作ることで自作プログラミング言語を作れます。 そして、コンパイラは通常フロントエンド、ミドルエンド、バックエンドに分けられ、各プロセスで様々な処理をしています。特にミドルエンド、バックエンドでは中間言語や各アーキテクチャに対するたくさんの最適化を施さなければなりません。この最適化を預けてフロントエン

    こわくないLLVM入門! - Qiita
  • LLVM言語 学習メモ (2) - FIzzBuzz - 単子葉類プログラマーのメモ

    前回の続き。 今回はFizzBuzzを作る。 そのために、ローカル変数、制御構文(if、while)、数値の文字列化が必要になる。 ※LLVMのバージョンは9.0.1。 目次 ローカル変数 制御構文 条件分岐 条件式 無条件分岐 繰り返し 数値の文字列化 putchar 複数桁の数値の文字列化 FizzBuzz ローカル変数 ローカル変数はalloca命令で定義する。 alloca命令の説明はhttps://releases.llvm.org/10.0.0/docs/LangRef.html#alloca-instruction。 構文のうち、今回使用する最小限の部分は以下。 <result> = alloca <type> allocaはスタック領域のポインタを返す。ポインタ経由で値を代入する場合はstore命令、取得する場合はload命令を使う。 store命令の説明はhttps://

    LLVM言語 学習メモ (2) - FIzzBuzz - 単子葉類プログラマーのメモ
  • LLVM言語 学習メモ (1) - 戻り値を返すだけのmain関数からHello Worldまで - 単子葉類プログラマーのメモ

    コンパイラを作る前にLLVM言語を勉強する。 記事はその自分用メモ。 第三者にわかりやすく解説する意図はない。 そういう記事はいつか書くかもしれないし書かないかもしれない。 公式のリファレンスを参考にする。 LLVM IRではHello Worldを標準出力することすら初学者にとって難易度が高い。 https://releases.llvm.org/10.0.0/docs/LangRef.html#module-structureにサンプルコードがあるが、C言語の知識がある程度だと、わかるようなわからないような内容。 まずはただ値を返すだけのmain関数を定義するところからはじめて、Hello Worldを標準出力できるところを目指す。 最適化に関するものなどはひとまず無視して、最低限動くものだけを作る。 目次 開発環境 最小のプログラム 関数呼び出し 引数付き関数の定義 グローバル変数

    LLVM言語 学習メモ (1) - 戻り値を返すだけのmain関数からHello Worldまで - 単子葉類プログラマーのメモ
  • LLVM C++ API 学習メモ(5) - 分岐、構造体、配列 - 単子葉類プログラマーのメモ

    分岐、構造体、配列に関するLLVM C++ APIについて。 ※LLVMのバージョンは10.0.0 目次 分岐 構造体 配列 分岐 LLVMにはif else文そのものや、do、while、forもない。 brで再現する必要がある。brは無条件でもジャンプできるし、条件にあわせて行先を指定することもできる。 LLVM言語のbrについての説明はこちら LLVMのC++ APIは以下。 // 無条件分岐 builder.CreateBr(destBlock); // 条件付き分岐 builder.CreateCondBr(i1Value, thenBlock, elseBlock); builderはllvm::IRBuilder型の変数。説明はこちら CreateCondBr()の第一引数は、i1型のllvm::Value* 構造体 // 構造体の宣言 // 中身は後で定義する // こうす

    LLVM C++ API 学習メモ(5) - 分岐、構造体、配列 - 単子葉類プログラマーのメモ
  • "Web フロントエンド"の悲しみと明るい未来

    next.jsvercel を提供して CDN からサーバーサイドでの処理までをワンストップに提供しているとか、 firebase がクライアントサイドでの SDK と Cloud Functions をなるべく一貫した体験で提供しようとしていることとか、あるいは今話題の React Server Component とかについて、フロントエンドの最前線がいったいどのような苦しみにあるか、理解できる人は実はあまり多くないのではないか、と僕は思っている。 それは何かといえば、絶望的なまでのサーバーサイド/バックエンドへの忌避感だ。「とにかくフロントエンド領域しか絶対にやりたくない」という人が沢山いるが、しかし一方フロントエンドで無理しないでサーバーを書くだけで楽になるようなタスクはいくらでもある(典型的には API たくさんアクセスするとか)。 そうしたときに、フロントエンドメインだが

    "Web フロントエンド"の悲しみと明るい未来
    kaz_hiramatsu
    kaz_hiramatsu 2021/01/09
    ドメインロジックとしてはサーバーサイドの方が遥かに複雑なわけで、そこには興味がない人が多いんだろうなあと言う気がしている