単子葉類プログラマーのメモ

プログラミング関連の自分用メモだけど他の人の役に立つかもしれないので公開しておく感じのブログ

2020-01-01から1年間の記事一覧

M5Stackで赤外線リモコン

赤外線リモコンの信号を受信してダンプするプログラムと、それを送信するプログラムを作成した。 結論から言うとプログラムは動作したが、M5GO IoTスターターキットに入っていた赤外線送受信ユニットは射程が2mほどしかなくて、エアコンや照明の制御には使え…

M5Stackで温度・湿度・気圧を測ってAmbientに保存

M5Stackで遊んだのでそのときにやったことのメモ。 初心者なのでM5GO IoTスターターキットを購入した。 目次 動作確認 デモを実行 Arduino C言語でENV II用コードを作成 実行結果 ソースコード Ambientにデータを保存 ENV II用コードにAmbientへの送信機能を…

Windows環境でLLVM、Clang、lld(Ver11.0.0~)をビルド(インストール・環境構築)する手順

公式の手順(英語)の中の、Using Visual Studio部分を画像付きで解説する。 Ver11.0.1~15.0.7もほぼ同様の手順でビルド可能。ソースコードをブラウザで取得する場合のDLページのみ違う。 ちなみに、Clangだけが必要な場合はhttps://releases.llvm.org/down…

LLVM C++ API 学習メモ(5) - 分岐、構造体、配列

分岐、構造体、配列に関するLLVM C++ APIについて。 ※LLVMのバージョンは10.0.0 目次 分岐 構造体 配列

ブラウザ上で動作するルーレット

ルーレットのみ表示したい場合はこちら→https://shining-corn.github.io/roulette/

LLVM IRにデバッグ情報を埋め込むためにいろいろ調べたときのメモ

LLVM IRおよびそこから出力する実行可能ファイルにデバッグ情報を埋め込む方法を調べるため、下準備としていろいろやったのでその記録を残しておく。 基本的にWindows環境を想定しているが、Linuxのgdbでの動作確認も行っている。 実施した内容は以下。 clan…

LLVM言語 学習メモ(6) - 構造体、配列

LLVMの構造体、配列について。 型については以前書いたが、その使い方についてはあまり書いていなかったので改めてまとめておく。 ※LLVMのバージョンは10.0.0 目次 構造体 配列

LLVM C++ API 学習メモ(4) - リテラル、算術演算、関数定義、ローカル変数

前回までで書いたもの以外の主要なAPIについてのメモ。 ※LLVMのバージョンは10.0.0 目次 リテラルの作成 算術演算 関数定義 getOrInsertFunction()とllvm::Function::Create() ローカル変数の追加

LLVM C++ API 学習メモ(3) - Hello World

前回までで、LLVM IRを作成したりオブジェクトファイルを出力したりする方法を説明したが、プログラム本体は戻り値を返すだけのものだった。 それだけだとまともなプログラムを作成できないので、今回は標準出力にhello worldを出力するLLVM IRを作成する。 …

LLVM言語 学習メモ(5) - 外部ライブラリの呼び出し方

LLVM言語でダイナミックリンクライブラリや静的ライブラリで定義されている関数を呼び出す方法についてのメモ。 Linux環境でも流用できるかもしれないが、ここではWindows環境のみを対象としている。 ※LLVMのバージョンは10.0.0 目次 ダイナミックリンクライ…

LLVM C++ API 学習メモ(2) - オブジェクトファイルの出力

前回、C++のLLVM APIで戻り値を返すだけのプログラムを作成し、文字列形式のLLVM IRを出力した。 今回はそれをオブジェクトファイルとして出力する方法と、それをリンクしてexeファイルを作成する方法についてのメモ。 ※この手順でLLVM 10.0.0をビルドした環…

LLVM C++ API 学習メモ(1) - LLVM IRの生成と文字列形式での出力

戻り値を返すだけのLLVM IRの作成、LLVM IR文字列の出力方法についてのメモ。 ※この手順でLLVM 10.0.0をビルドした環境で、Visual Studioのプロジェクトをこの内容に設定してビルド確認している。 目次 目的のLLVM IRコード C++ソースコード 解説 Moduleの作…

LLVM言語 学習メモ (4) - 識別子、型、定数

LLVMのLLVM言語の識別子、型、定数(リテラル)の仕様についてのメモ。 ※LLVMのバージョンは10.0.0 目次 識別子 型 Void型 関数型 ファーストクラス型 整数型 浮動小数点数型 ポインタ型 ラベル型 配列型 構造体型 定数 単純な定数 複雑な定数

LLVM API利用時のVisual Studio C++のプロジェクトのプロパティの設定

LLVM APIを使うためのコンパイルオプション(Visual Studioのプロジェクトのプロパティ)の設定内容についてのメモ。 マクロ、インクルードディレクトリや追加の依存ファイル(libファイル)の指定は当然必要だが、ほかにもLLVM API独自のクセのある設定が必…

LLVM言語 学習メモ (3) - phiによる条件分岐、ループの効率化

LLVMのphi命令についてのメモ。 内容は、phi命令がなぜ必要なのかという説明、使い方、phi命令を使わない場合の条件分岐やループの例と使った場合の例。 ※LLVMのバージョンは10.0.0。 目次 なぜphi命令が必要なのか phi命令とは phi命令を使った場合の分岐 p…

Windows環境でLLVM、Clang、lld(Ver10.0.0)をビルド(インストール・環境構築)する手順

LLVM Ver11向けの手順を投稿しました。 https://shining-corn.hatenablog.jp/entry/2020/10/31/142333 LLVM Ver10は最新のVisual Studio 2019ではビルドが失敗するようになったので、ここに書いていた手順は消しました。

LLVM言語 学習メモ (2) - FIzzBuzz

前回の続き。 今回はFizzBuzzを作る。 そのために、ローカル変数、制御構文(if、while)、数値の文字列化が必要になる。 ※LLVMのバージョンは9.0.1。 目次 ローカル変数 制御構文 条件分岐 条件式 無条件分岐 繰り返し 数値の文字列化 putchar 複数桁の数値…

LLVM言語 学習メモ (1) - 戻り値を返すだけのmain関数からHello Worldまで

コンパイラを作る前にLLVM言語を勉強する。 本記事はその自分用メモ。 第三者にわかりやすく解説する意図はない。 そういう記事はいつか書くかもしれないし書かないかもしれない。 公式のリファレンスを参考にする。 LLVM IRではHello Worldを標準出力するこ…

Windows環境のLLVM(Ver9.0.0)セットアップ手順

Windows環境でLLVM(Ver9.0.0)をコンパイルして実行するまでにつまづいた点がいくつかあったので忘れないようにメモ。 ※Ver10.0.0のビルド手順の説明はこちら 目次 つまづいた点 成功した方法 ビルドに必要なツール ビルド手順 LLVM IRのコンパイル手順 実…

スキルマップ

適当に自分がエンジニアやってて見聞きしたスキルを羅列。 目次 基礎 プログラミング言語 データ記述形式 プログラミングパラダイム プログラミング原則・原理・ノウハウ メモリ管理 並列処理 プログラミング系その他 コンパイラ ビルドツール 自動テスト パ…