Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #88, АПРЕЛЬ 2006 г.

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). Не хочу тебя расстраивать, но сбой подобного плана, скорее всего, повлечет к полной потере данных с устройства. В следующий раз делай бэкап.

Назад на стр. 088-122-3  Содержание  Вперед на стр. 088-122-5