Русская Википедия:Hexspeak

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Шаблон:Переработать Hexspeak, как и Leet, является новой необычной формой записи слов английского языка.

Hexspeak был создан программистами, которые желали использовать магические числа, целочисленные константы для однозначной идентификации ресурса или данных. Используя шестнадцатеричную систему, состоящую из десятичных цифр от 0 до 9 и латинских букв от A до F (0123456789ABCDEF), стало возможно создавать небольшие слова, в которых цифра «0» обозначает букву «O», «1» обозначает буквы «I» или «L», «5» обозначает «S», «7» обозначает «T», и «6» или «9» обозначает «G» или «g» соответственно. Такие цифры, как 2 или 8 могут использоваться так же, как они используются в Leet или ребусах; например, слово «defecate» может быть представлено в виде DEFECA7E или же DEFEC8.

Известные магические числа

Шаблон:Details

Значительное количество процессоров, операционных систем и отладчиков используют магические числа, особенно в качестве магических отладочных значений.

  • Шаблон:0x («ate bad food» Шаблон:Tr) используется Apple в отчётах об ошибках iOS для обозначения ситуации, когда приложение слишком долго либо запускается, либо завершается, либо отвечает на события системы.[1]
  • Шаблон:0x («I bad boot» Шаблон:Tr) — магическое число заголовка мультизагрузчика.[2]
  • Шаблон:0x («bad food» Шаблон:Tr) используется LocalAlloc(LMEM_FIXED) компании Microsoft для обозначения не инициализированной области памяти при использовании debug heap.[3]
  • Шаблон:0x («bead face», «face bead» Шаблон:Tr) — шаблон, заполняющий всю неиспользуемую память в симуляторе микроконтроллера Motorola 68HCS12DP256, SimHC12.
  • Шаблон:0x («cafe babe» Шаблон:Tr) используется Mach-O для указания на Universal объектные файлы, а также в языке Java для идентификации файлов классов Java bytecode.[4]
  • Шаблон:0x («disease» Шаблон:Tr) флаг, указывающий на нормальную загрузку на Nintendo GameCube и Wii консолях.[5][6]
  • Шаблон:0x («Dead Babe» Шаблон:Tr) используется IBM Jikes RVM для контроля стека главного потока[7]
  • Шаблон:0x («dead beef» Шаблон:Tr) часто используется для обозначения аварийного завершения программы или зависания во встраиваемых устройствах. Используется в системах IBM RS/6000, Mac OS на 32-битных процессорах PowerPC и Commodore Amiga в качестве магического числа для отладки. В Solaris оно обозначает освобождённую память ядра. В OpenVMS на процессорах Alpha можно увидеть DEAD_BEEF, нажав клавиши CTRL+T. В консоли у DEC Alpha SRM есть фоновый процесс, который следит за ошибками в памяти, определяемый в PS как «BeefEater waiting on Шаблон:0x».[8].
  • Шаблон:0x («dead dead» Шаблон:Tr) отладочный код, отображаемый при вызове Синего Экрана Смерти при помощи отладчика ядра или используя специальную комбинацию клавиш.[9] Этим обычно пользуются разработчики драйверов для получения дампа памяти в операционных системах на базе Windows NT. Альтернативным кодом Шаблон:0xявляется Шаблон:0x,[10] также называемый MANUALLY_INITIATED_CRASH на Microsoft Developer Network.
  • Шаблон:0x («dead fall» Шаблон:Tr) используется Apple в iOS при падениях системы, когда пользователь вынужден закрыть приложение.[1]
  • Шаблон:0x («defecated» Шаблон:Tr) — магическое число для дампов памяти OpenSolaris.[11]
  • Шаблон:0x («face feed» Шаблон:Tr) Используется в серверах Alpha, работающих под управлением Windows NT. Alpha Hardware Abstraction Layer (HAL) генерирует эту ошибку, когда встречает аппаратный сбой.[12]
  • Шаблон:0x («feel dead» Шаблон:Tr) используется как магическое число в Linux в системном вызове reboot.[13]
  • Шаблон:0x («feed cafe» Шаблон:Tr) используется вместе с Шаблон:0xаналогично «foo» и «bar».
  • Шаблон:0x — магическое число для файлов Microsoft Office. В little-endian оно читается как D0CF11E0, «docfile0».[14]
  • Шаблон:0x — цвет кожи в формате RGB.
  • Шаблон:0x («free» Шаблон:Tr) используется Debug-конфигурациями некоторых компиляторов (напр., MSVC) для маркировки указателей на освобождённую память.
  • Шаблон:0x — также используется Debug-конфигурациями компиляторов для первичной инициализации указателей на объекты.

Еще варианты: BAD, CAB, BED, FED, CAD, C0DE, DEAF, FACE, FACADE, ACE, DAB, FED0RA, FEED, AD0BE, BEE, FADE, BAFFED, BA0BAB

Создание магических чисел

Указанные выше слова — всего лишь небольшая часть из сотен слов английского языка, содержащих только буквы «a», «b», «c», «d», «e», «f», «o», «i» и «s», поэтому программистам легко создавать собственные, такие как 0xD15EA5ED или 0xBED51DE5. Можно заметить несколько шаблонов в классических hexspeak константах, перечисленных выше. Все эти константы используют всю ширину машинного слова (в данном случае 32-битного), и ни одно из них не начинается с 1 или 5. Такой выбор означает, что если слово интерпретировать целое число в десятичной записи, то это обычно большое отрицательное целое. Используемое компанией Microsoft значение 0xBAADF00D — также хорошее значение для отлова доступа к не проинициализированной памяти по другой причине — окончание слова «1», «5», «b», «d» или «f» создаёт нечётное число, которое генерирует unaligned pointer exception на многих процессорных архитектурах, если константа интерпретирована как значение указателя.

Альтернативные буквы

  • В языке программирования Ada шестнадцатеричные числа заключены в «16#» и «#». Например: «16#Ada_Ada_Ada_Ada#».
  • В языке программирования C для обозначения шестнадцатеричных чисел используется префикс «0x». При чтении слов он обычно игнорируется.
  • В ассемблере 6502 шестнадцатеричные числа обозначены префиксом «$». Это позволяет использовать слова, начинающиеся на «S», например $EED («seed»).
  • В Ассемблере с Intel-синтаксисом шестнадцатеричные числа имеют окончание «h». Например: FEEDADEADF15h («feed a dead fish» — «корми мёртвую рыбу»). Заметим, что числа в такой записи не могут начинаться буквой, дабы компилятор не путал их с переменными, поэтому в начале вводится ноль. Так число «FEEDADEADF15h» должно быть записано как «0FEEDADEADF15h».

См. также

Ссылки

Шаблон:Примечания