kubo39's blog

ただの雑記です。

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

各言語処理系からみるLLVMインラインアセンブラ、主にmemory clobberについて

雑メモです。LLVMの実装追いきれてないからなんか間違ってたら、、スマンコ!w 前提 LLVMのインラインアセンブラはCodeGenの実体としてはnaked function相当。そのため、codegenには関数属性なんかを渡しているし、ジッサイこれが最適化に効いている! また…

Writing OS in 1000 lines をD言語でやった

Writing an OS in 1000 Linesという自作OSを学ぶための教材があり、これをD言語(LDCコンパイラ)で行った記録です。 先行事例 他言語実装という枠では、RustやZigですでにやられている方がいました。 Rust Totsugekitai/kanios レポジトリ: https://github.co…

DMDの-fPIE/-fPICとリロケーションタイプのはなし

https://twitter.com/yukicoder/status/1703772579511836745 という話がTwitter、あいやX(旧Twitter)あった。 これはLinux環境でbrewで入れたDMDはdmd.confに-fPICがついていないのが原因だった、っぽい。 DMDはコンパイル時の初期化設定ファイルを読み込む…

D言語のftoa/dtoa実装

以前のポストでftoa実装がナイーブな感じであるという話はしたが、説明はしてなかったので残しておく。 アルゴリズム D言語の浮動小数点数の10進表記アルゴリズムは指数部の数値によって3種類のアルゴリズムを使い分けている。 Algorithm A: 指数部が大きい…

D言語で使われているデータ構造・アルゴリズム

atof/ftoa相当や正規表現まわりのコードをざっくり読んでて、phobosとかで使われてるアルゴリズムってどんなのがあるっけというのをまとめてみた。主に、というかだいたい標準ライブラリで超雑なまとめです。 std.algorithm Boyer-Moore法(std.algorithm.sea…

WSL2上でRustでespのstdをやっていく予定のはなし (1)

Interface誌のRust特集で、espのstdをやっていくぜ!となったが悪戦苦闘している。 まずドライバを入れてWindows側でデバイスを認識するところからつまづいた。 Establish Serial Connection with ESP32 - ESP32 - — ESP-IDF Programming Guide latest docum…

isInstanceOfテンプレートとalias templates

Slackで以下のコードが通らないのはなぜ?という話があった。 import std; static assert(isInstanceOf!(Array, Array!char)); // OK! static assert(isInstanceOf!(Regex, Regex!char)); // Compile Error! どうもこれを調べてみると、alias templatesの場…

Nimと名前修飾の小ネタ

Nim

NimはDWARF v5の時点では DW_AT_language の割当はないけど、ソースコードはDWARFに入れることが できて $ eu-readelf --debug-dump=info hello とかで確認できる。 proc main() = echo "Hello!" main() $ nim c --debugger:native hello.nim (...) $ file h…