近年はプログラミングにおいて AI が非常に重要になっています。私も仕事やプライベートで AI を使いまくっています。
そんな中で、家のインターホンに SwitchBot などをつけてスマホでの遠隔応答に対応させる、というシステムを作った一部始終を会社ブログに書きました。
家のインターホンの遠隔応答システムを作った話 - 株式会社エレクトリック・シープ
なお、上の記事の執筆には AI を一切利用しておりません。私は AI で文章を書くのも好きですが、手で書くのも好きです。今回は人の手によって書かれた暖かみのある(?)記事となっております。よければ是非ご笑覧ください。
『ぷよぷよプログラミング』という書籍を出版しました。本日 2025 年 8 月 8 日が発売日となります!
すぐわかる! ぷよぷよプログラミング SEGA公式ガイドブック
「ぷよぷよ」ゲームをゼロから完成させるまでの道のりを、一冊の本の中で解説しております。ぜひお手にとって頂けましたら幸いです。
先日、「Binary Hacks Rebooted」をご恵贈賜りました。通して読んでみたところ、私の心の琴線に触れる内容が多くあり、ブログ記事で紹介させてもらいます。
前回の記事では、JavaScript の実行エンジン V8 の JIT 出力コードを読んでみました。記事は M1 Mac 上で動かした結果でしたので、ARM アーキテクチャのアセンブラを読むことになりました。
さてそんな ARM アーキテクチャですが、最近の ARM には FJCVTZS という JavaScript 専用の機械語命令があるのをご存知でしょうか?CPU に、特定の言語(それもコンパイラを持たない JavaScript)専用の命令があると知ったとき、私は大いに驚きました(過去にも Jazelle みたいなものはありましたが)
今回は、この FJCVTZS 命令について、実際にどれだけ効果があるのか、V8 をビルドしながら調べてみましょう。
Chrome の JavaScript はとても高速なことでも有名ですが、その実行エンジンは V8 と呼ばれます。V8 自体は独立したモジュールであり、Node.js 等にも使われております。
V8 が JavaScript を高速に実行する技術の一つが JIT (Just In Time) コンパイルです(一般的に JIT と呼ばれます)。これは、そのまま実行すると遅い JavaScript を実行中にリアルタイムに直接マシンコードに変換し(これが Just In Time と呼ばれる所以です)、途中からそのコードに入れ替えて実行することで高速化を達成しています。特に何度も実行される関数で効力を発揮します。
JIT という名前は聞いたことがあろうとも、実際に JIT がどのようなコードを実行しているのかを確認する機会は滅多にないでしょう。この記事では、実際に V8 の JIT の出力を確認してみます。