FAQ Степан Ильин aka Step Хакер, номер #088, стр. 088-122-4 * Приемник указывается слева от источника. Команда mov eax, ebx перешлет в eax значение регистра ebx. * Существует определенные набор зарегистрированных слов, в частности названия регистров. Их нельзя использовать для указания переменных и меток. С синтаксисом AT&T работает GNU Assembler, входящий по умолчанию в любой Linux. Однако он довольно специфичен и в какой-то мере более сложен: * Наименование регистра начинается со знака процента (%): %eax, %ebx, %ecx, %edx * Иной порядок операндов: в начале указывается источник, затем — приемник. В синтаксисе Intel все наоборот. * Размер операнда определяется как окончание имени инструкции. Окончание b указывает на то, что операнды имеют размер 1 байт, окончание w - 1 слово (2 байта), окончание l - 4 байта. Например: movl %ebx,%eax (регистры ebx и eax оперируют двойными словами, то есть операндами размером 4 байта) * Константы отмечаются префиксом $, например subl $31337,%ebx * Сегмент и смещение отмечаются по-другому. Сравни: 00:0FFh (Intel) и 00.$0xFF (AT&T) Справедливости ради замечу, что в целом синтаксисы очень похожи, и тому, кто разберется с программированием на одном из них, перейти на другой не составит труда. Тем более что всегда можно воспользоваться специальным конвертером — att2intel (www.blah.ch/att2intel) Q: Вот в PHP есть две функции: print и echo. Обе выводят текст на экран (то есть веб-страницу), но должна же быть какая-то разница? A: В результате интерпретации следующего кода: <?php print "Hello World! <br />"; echo "Hello World!"; ?> выход на экран будет одинаковым: Hello World! Hello World! Поэтому чаще всего использование той или иной функции зависит от личных предпочтений. Однако разница все-таки есть и напрямую связана с тем, как ты используешь вывод. В случае использования функции print возвращается значение True или False. Это может быть удобно, например, для реализации алгоритмов сортировки. В то же время функция Echo не возвращает какого-либо значения, но зато выполняется немного быстрее. Q: Перестала определяться моя USB-флешка на 512 Мб. Что делать? A: Проблемы с определением Flash-диска могут возникнуть по несколькими причинам. Он может быть не отформатированным, ошибочно защищенным от записи/чтения, возможно, в системной области неправильно указан его размер. Во всех этих случаях рецепт один: нужно попробовать отформатировать его с помощью специальной утилиты, которая у каждого производителя Flash-устройств своя. Беги на его официальный сайт и в разделе Downloads ищи фирменную программу для форматирования. Если определить принадлежность флешки к тому или иному производителю невозможно, то нужно попытаться выяснить используемый тип контроллера. Для этого можно выложить фото девайса (если возможно – в разобранном виде) на различных «железных» форумах, где опытные люди смогут тебе подсказать. В некоторых случаях может помочь программа EzRecover (http://mike.skyper.ru/files/EzRecover.exe). Не хочу тебя расстраивать, но сбой подобного плана, скорее всего, повлечет к полной потере данных с устройства. В следующий раз делай бэкап. |