この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)
出典検索?: "Hexspeak"
Hexspeakとは、リートスピークと類似の、英語の変わった表記法の一種である。
プログラマは、メモリやデータに「未使用」や「異常データ」といった印をつけるために分かりやすいマジックナンバーを必要としており、この際にHexspeakが作り出された。数字の"0"をアルファベットの"O"に、数字の"1"をアルファベットの"I"に、数字の"5"をアルファベットの"S"に読み替えるといった方法を利用し、16進数の表記に使われる文字 (0123456789ABCDEF) しか使えない条件下で短い単語を表現している。 多くのプロセッサ、オペレーティングシステム (OS)、デバッガでHexspeakに基づくマジックナンバーが使用されている。特にデバッグ用の値として用いられている場合が多い。
特記すべきマジックナンバー
0xABADBABE ("a bad babe") — Appleが"Boot Zero Block"を表す値として使っている。
0xBAADF00D ("bad food") — Microsoft WindowsのLocalAlloc関数の第一引数にLMEM_FIXEDを渡して呼び出してメモリを確保した場合に、ヒープに確保されたメモリが初期化されていないことを表す値として使用されている。
0xBADDCAFE ("bad cafe") — OpenSolarisのwatchmallocライブラリが、確保したメモリが初期化されていないことを表す値として使用している。
0xCAFEBABE ("cafe babe") — Mach-O(68kとPowerPCの両方で動くファットバイナリ版)において、オブジェクトファイルを表す値として使用されている。また、JavaにおいてJavaバイトコードで記述されたJavaクラスファイルを表す値として使用されている[1]。
0xDEADBEEF ("dead beef") — IBM RS/6000システム[2]、32ビットPowerPC用Mac OS、コモドール Amigaでデバッグ用のマジックナンバーとして使用されている。サン・マイクロシステムズのSolarisでは、開放されたカーネルメモリを表す値として使用されている。Alphaプロセッサで動作しているOpenVMSでは、CTRL-Tを押下するとDEAD_BEEFが表示される。
0xDEFEC8ED ("defecated") — OpenSolarisのコアダンプで使用されている[3]。
0xFACEFEED ("face feed") — Alphaサーバで動作するWindows NTで使用されている。AlphaのHardware Abstraction Layer (HAL) がハードウェア障害を検出した場合、エラーメッセージとしてこの値が表示される[4]。
0xFEE1DEAD ("feel dead") — Linuxのrebootシステムコールでマジックナンバーとして使用されている。
0xC0ED ("coed") — Linuxのmountシステムコールでマジックナンバーとして使用されている。
0xBADCAB1E ("bad cable") — Microsoft eVCデバッガにおいて、コネクションが切断されたときにデバッガに返されるエラーコードとして使用されている。
0xFEEDFACE ("feed face") — Mach-Oバイナリのヘッダとして使用されている。また、OpenSolarisのwatchmallocで不正なポインタを示す値として使用されている。
0xDEADDEAD ("dead dead") — Windows NTベースのOSで、専用のキーストロークによって強制的にブルースクリーンを発生させた際のSTOPコードとして使用されている。