Interested Article - 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.

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

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

  • 0x 8BADF00D («ate bad food» с англ. «ел плохую пищу») используется Apple в отчётах об ошибках iOS для обозначения ситуации, когда приложение слишком долго либо запускается, либо завершается, либо отвечает на события системы.
  • 0x 1BADB002 («I bad boot» с англ. «плохая загрузка») — магическое число заголовка мультизагрузчика.
  • 0x BAADF00D («bad food» с англ. «плохая еда») используется LocalAlloc(LMEM_FIXED) компании Microsoft для обозначения не инициализированной области памяти при использовании debug heap.
  • 0x BEADFACE («bead face», «face bead» с англ. «укрась лицо бисером») — шаблон, заполняющий всю неиспользуемую память в симуляторе микроконтроллера Motorola 68HCS12DP256, SimHC12.
  • 0x CAFEBABE («cafe babe» с англ. «девочка из кафе») используется Mach-O для указания на объектные файлы, а также в языке Java для идентификации файлов классов Java bytecode .
  • 0x D15EA5E («disease» с англ. «болезнь») флаг, указывающий на нормальную загрузку на Nintendo GameCube и Wii консолях.
  • 0x DEADBABE («Dead Babe» с англ. «мёртвая девочка») используется IBM для контроля стека главного потока
  • 0x DEADBEEF («dead beef» с англ. «мёртвая говядина») часто используется для обозначения аварийного завершения программы или зависания во встраиваемых устройствах. Используется в системах IBM RS/6000 , Mac OS на 32-битных процессорах PowerPC и Commodore Amiga в качестве магического числа для отладки. В Solaris оно обозначает освобождённую память ядра. В OpenVMS на процессорах Alpha можно увидеть DEAD_BEEF, нажав клавиши CTRL+T. В консоли у DEC Alpha SRM есть фоновый процесс, который следит за ошибками в памяти, определяемый в PS как «BeefEater waiting on 0x DEADBEEF ». .
  • 0x DEADDEAD («dead dead» с англ. «мёртвый-мёртвый») отладочный код, отображаемый при вызове Синего Экрана Смерти при помощи отладчика ядра или используя специальную комбинацию клавиш. Этим обычно пользуются разработчики драйверов для получения дампа памяти в операционных системах на базе Windows NT. Альтернативным кодом 0x DEADDEAD является 0x 000000E2 , также называемый MANUALLY_INITIATED_CRASH на Microsoft Developer Network.
  • 0x DEADFA11 («dead fall» с англ. «смертельное падение») используется Apple в iOS при падениях системы, когда пользователь вынужден закрыть приложение.
  • 0x DEFEC8ED («defecated» с англ. «испражненный») — магическое число для дампов памяти OpenSolaris .
  • 0x FACEFEED («face feed» с англ. «корм для лица») Используется в серверах Alpha, работающих под управлением Windows NT. Alpha (HAL) генерирует эту ошибку, когда встречает аппаратный сбой.
  • 0x FEE1DEAD («feel dead» с англ. «чувствовать себя мёртвым») используется как магическое число в Linux в системном вызове reboot.
  • 0x FEEDCAFE («feed cafe» с англ. «корми кафе») используется вместе с 0x DEADBEEF аналогично «foo» и «bar» .
  • 0x E011CFD0 — магическое число для файлов Microsoft Office. В little-endian оно читается как D0CF11E0, «docfile0».
  • 0x FACE8D цвет кожи в формате RGB .
  • 0x FEEE («free» с англ. «свободен») используется Debug-конфигурациями некоторых компиляторов (напр., MSVC) для маркировки указателей на освобождённую память.
  • 0x CCCCCCCC — также используется 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» создаёт нечётное число, которое генерирует на многих процессорных архитектурах, если константа интерпретирована как значение указателя.

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

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

См. также

Ссылки

  1. . Архивировано из 2 июля 2012 года.
  2. . Архивировано из 2 июля 2012 года.
  3. . Архивировано из 2 июля 2012 года.
  4. . Artima.com. Дата обращения: 1 октября 2009. Архивировано из 2 июля 2012 года.
  5. . Архивировано из 2 июля 2012 года.
  6. . Архивировано из 2 июля 2012 года.
  7. . Дата обращения: 1 октября 2009. Архивировано из 2 июля 2012 года.
  8. . Catb.org. Дата обращения: 1 октября 2009. Архивировано из 2 июля 2012 года.
  9. . msdn.microsoft.com (1 октября 2009). Дата обращения: 13 октября 2009. Архивировано из 2 июля 2012 года.
  10. . msdn.microsoft.com (1 октября 2009). Дата обращения: 13 октября 2009. Архивировано из 2 июля 2012 года.
  11. . Cvs.opensolaris.org. Дата обращения: 1 октября 2009. Архивировано из 2 июля 2012 года.
  12. . Support.microsoft.com (1 ноября 2006). Дата обращения: 1 октября 2009. Архивировано из 2 июля 2012 года.
  13. . Архивировано из 2 июля 2012 года.
  14. . Архивировано из 2 июля 2012 года.
Источник —

Same as Hexspeak