Hexspeak

Hexspeakとは、リートスピークと類似の、英語の変わった表記法の一種である。

プログラマは、メモリやデータに「未使用」や「異常データ」といった印をつけるために分かりやすいマジックナンバーを必要としており、この際にHexspeakが作り出された。数字の"0"をアルファベットの"O"に、数字の"1"をアルファベットの"I"に、数字の"5"をアルファベットの"S"に読み替えるといった方法を利用し、16進数の表記に使われる文字 (0123456789ABCDEF) しか使えない条件下で短い単語を表現している。

特記すべきマジックナンバー

多くのプロセッサ、オペレーティングシステム (OS)、デバッガでHexspeakに基づくマジックナンバーが使用されている。特にデバッグ用の値として用いられている場合が多い。

マジックナンバーの作成方法

限られた文字("a", "b", "c", "d", "e", "f", "o", "i", "s")だけで作ることのできる英単語は少なくとも数百あることを考えると、Hexspeakを使ったマジックナンバーを作成するのはさほど難しいことではない。例えば、0xD15EA5ED ("diseased")、0xBED51DE5 ("bedsides")といった値を簡単に作ることができる。

また、上に挙げたような既存のHexspeakで使用されているパターンを参考にするのもよい。これらの定数はすべてワード長と等しく(32ビット環境の場合)、また"1"および"5"で始まるものはない。 これは、定数が符号付き整数値として解釈された場合に、大きな負数として扱われるようにするためである。 例えば、0xBAADF00Dを符号付き32ビット整数値として解釈すると-1163005939となるが、多くのプログラムではこのような大きな負数が現れるケースは稀である。 マイクロソフトが使用している0xBAADF00Dという値も、初期化されていないメモリへのアクセスの検知に適している。

その他の文字

関連項目

脚注

[脚注の使い方]

注釈

出典

  1. ↑ Artima.com: Why CAFEBABE
  2. ↑ Jargon FileのDEADBEEFの項
  3. ↑ Cross Reference: dumphdr.h at the Wayback Machine (archived 2009年03月14日)
  4. ↑ STOP Message 0xFACEFEED on Alpha Computers at the Wayback Machine (archived 2008年12月03日)
  5. ↑ リーナス・トーバルズ. “linux/include/uapi/linux/reboot.h”. Github.com上のLinuxソースコード. 2026年5月29日閲覧。
  6. ↑ リーナス・トーバルズ. “linux/include/uapi/linux/mount.h”. Github.com上のLinuxソースコード. 2026年6月9日閲覧。