Hexspeak: различия между версиями
[непроверенная версия] | [отпатрулированная версия] |
Insolor (обсуждение | вклад) м →Известные магические числа: исправлена ссылка на iOS |
Нет описания правки |
||
Строка 37: | Строка 37: | ||
== Альтернативные буквы == |
== Альтернативные буквы == |
||
* В языке программирования [[Ada]], шестнадцатеричные числа заключены в «16#» |
* В языке программирования [[Ada]], шестнадцатеричные числа заключены в «16#» и «#». Например: «16#Ada_Ada_Ada_Ada#». |
||
* В [[Си (язык программирования)|языке программирования C]] для обозначения шестнадцатеричных чисел используется префикс «0x». При чтении слов он обычно игнорируется. |
* В [[Си (язык программирования)|языке программирования C]] для обозначения шестнадцатеричных чисел используется префикс «0x». При чтении слов он обычно игнорируется. |
||
* В [[Язык ассемблера|ассемблере]] [[6502]], шестнадцатеричные числа обозначены префиксом «$». Это позволяет использовать слова, начинающиеся на «S», например $EED («seed»). |
* В [[Язык ассемблера|ассемблере]] [[6502]], шестнадцатеричные числа обозначены префиксом «$». Это позволяет использовать слова, начинающиеся на «S», например $EED («seed»). |
Версия от 00:36, 15 июля 2012
Эта статья или раздел содержит незавершённый перевод с иностранного языка. |
Содержимое этой статьи нуждается в чистке. |
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.
Известные магические числа
Значительное количество процессоров, операционных систем, и отладчиков используют магические числа, особенно в качестве магических отладочных значений.
- 0x8BADF00D («ate bad food», рус. ел плохую пищу) используется Apple в отчётах об ошибках iOS для обозначения ситуации, когда приложение слишком долго либо запускается, либо завершается, либо отвечает на события системы.[1]
- 0xABADBABE («a bad babe», рус. плохая девочка) используется Apple в качестве магического числа для «Boot Zero Block».[источник не указан 5197 дней]
- 0x1BADB002 («I bad boot»[источник не указан 5197 дней], рус. плохая загрузка) — магическое число заголовка мультизагрузчика.[2]
- 0xBAADF00D («bad food», рус. плохая еда) используется LocalAlloc(LMEM_FIXED) компании Microsoft для обозначения не инициализированной области памяти при использовании debug heap.[3]
- 0xBADCAB1E («bad cable», рус. плохой кабель) — код ошибки, возвращаемый отладчику Microsoft eVC debugger в случае, разрыва соединения.[источник не указан 5197 дней]
- 0xBADDCAFE («bad cafe», рус. плохое кафе) используется отладочным распределителем памяти 'watchmalloc' в OpenSolaris для обозначения выделенной, но незадействованной памяти.[источник не указан 5197 дней]
- 0xBEADFACE («bead face, face bead», рус. ) — шаблон заполняющий всю неиспользуемую память в симуляторе микроконтроллера Motorola 68HCS12DP256, SimHC12.
- 0xCAFEBABE («cafe babe», рус. ) is used by Mach-O to identify Universal object files, and by the Java programming language to identify Java bytecode class files.[4]
- 0xCAFED00D («Cafe Dude», рус. ) используется в Java как магическое число для его pack200 сжатия.[источник не указан 5197 дней]
- 0xD15EA5E («disease», рус. ) флаг, указывающий на нормальную загрузку на Nintendo GameCube и Wii консолях.[5][6]
- 0xDEADBABE («Dead Babe», рус. ) is used by IBM Jikes RVM as a sanity check of the stack of the primary thread[7]
- 0xDEADBEEF («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 0xdeadbeef».[8].
- 0xDEADDEAD («dead dead», рус. мертвый мертвый) is the bug check (STOP) code displayed when invoking a Blue Screen of Death either by telling the kernel via the attached debugger, or by using a special keystroke combination.[9] This is usually seen by driver developers, as it is used to get a memory dump on Windows NT based systems. An alternative to 0xDEADDEAD is the bug check code 0x000000E2,[10] as they are both called MANUALLY_INITIATED_CRASH as seen on the Microsoft Developer Network.
- 0xDEADFA11 («dead fall», рус. ) используется Apple в iOS при падениях системы, когда пользователь вынужден закрыть приложение.[1]
- 0xDEFEC8ED («defecated», рус. чистый) — магическое число для дампов памяти OpenSolaris.[11]
- 0xFACEFEED («face feed», рус. ) is used by Alpha servers running Windows NT. The Alpha Hardware Abstraction Layer (HAL) generates this error when it encounters a hardware failure.[12]
- 0xFEE1DEAD («feel dead», рус. ) is used as a magic number in the Linux reboot system call.[13]
- 0xFEEDCAFE («feed cafe», рус. ) is to 0xDEADBEEF, as «bar» is to «foo».
- 0xFEEDFACE («feed face», рус. корми лицо) используется как сигнатура Mach-O бинарных файлов, и как значение неверного указателя для 'watchmalloc' в OpenSolaris.[источник не указан 5197 дней]
- 0xC0FFEE («coffee», рус. кофе) используется в таких 24-битных DSP, как Motorola 56303.[источник не указан 5197 дней]
- 0xE011CFD0 — магическое число для файлов Microsoft Office. В little-endian оно читается как D0CF11E0, «docfile0».[14]
- 0xFACE8D — цвет кожи в формате RGB.
Создание магических чисел
Указанные выше слова — всего лишь небольшая часть из сотен слов английского языка, содержащих только буквы «a», «b», «c», «d», «e», «f», «o», «i» и «s», поэтому программистам легко создавать собственные, такие как 0xD15EA5ED или 0xBED51DE5. As such, it is useful to observe a few patterns in the classic hexspeak constants given above. These constants all use the full width of the word (in this case 32-bit), and none begin with «1» or «5». This choice means that if the word is interpreted as an integer, it is a (usually large) negative integer. For example, 0xBAADF00D is −1163005939, a large negative integer that is unlikely to arise in many programs. Microsoft’s 0xBAADF00D is also a good value to catch access to uninitialised memory for another reason—ending the word with the «1», «5», «b», «d», or «f» ensures that the constant is an odd number, which generates an unaligned pointer exception on many processor architectures if the constant is interpreted as a pointer value.
Альтернативные буквы
- В языке программирования Ada, шестнадцатеричные числа заключены в «16#» и «#». Например: «16#Ada_Ada_Ada_Ada#».
- В языке программирования C для обозначения шестнадцатеричных чисел используется префикс «0x». При чтении слов он обычно игнорируется.
- В ассемблере 6502, шестнадцатеричные числа обозначены префиксом «$». Это позволяет использовать слова, начинающиеся на «S», например $EED («seed»).
- In the Ассемблере от Интел, шестнадцатеричные числа имеют окончание «h». Например: FEEDADEADF15h («feed a dead fish»). (Ешь мёртвую рыбу). Заметим, эти числа в такой записи не могут начинаться буквой. поэтому должен вводиться ноль, дабы компилятор не путал их с их от переменными. «FEEDADEADF15h» должно быть записано как «0FEEDADEADF15h».
См. также
Ссылки
- ↑ 1 2 Technical Note TN2151: Understanding and Analyzing iPhone OS Application Crash Reports . Архивировано 2 июля 2012 года.
- ↑ Multiboot specifications . Архивировано 2 июля 2012 года.
- ↑ Win32 Debug CRT Heap Internals . Архивировано 2 июля 2012 года.
- ↑ Why Cafebabe . Artima.com. Дата обращения: 1 октября 2009. Архивировано 2 июля 2012 года.
- ↑ Yet Another Gamecube Documentation: Dolphin-OS Globals . Архивировано 2 июля 2012 года.
- ↑ Wiibrew: Memory Map . Архивировано 2 июля 2012 года.
- ↑ DEADBABE sanity check . Дата обращения: 1 октября 2009. Архивировано 2 июля 2012 года.
- ↑ Jargon File entry for DEADBEEF . Catb.org. Дата обращения: 1 октября 2009. Архивировано 2 июля 2012 года.
- ↑ Bug Check 0xDEADDEAD: MANUALLY_INITIATED_CRASH, MSDN . msdn.microsoft.com (1 октября 2009). Дата обращения: 13 октября 2009. Архивировано 2 июля 2012 года.
- ↑ Bug Check 0xE2: MANUALLY_INITIATED_CRASH, MSDN . msdn.microsoft.com (1 октября 2009). Дата обращения: 13 октября 2009. Архивировано 2 июля 2012 года.
- ↑ Opensolaris header line 48 for 0xDEFEC8ED . Cvs.opensolaris.org. Дата обращения: 1 октября 2009. Архивировано 2 июля 2012 года.
- ↑ Technet article for 0xFACEFEED . Support.microsoft.com (1 ноября 2006). Дата обращения: 1 октября 2009. Архивировано 2 июля 2012 года.
- ↑ include/linux/reboot.h . Архивировано 2 июля 2012 года.
- ↑ Documents That Are Supported by the Office Filter . Архивировано 2 июля 2012 года.