LINUX.ORG.RU

Чтение файлов на ассемблере в AT&T-синтаксисе


0

1

Собственно, сабж. Я давно хотел покопаться в ассемблере. Пока разобрался, как слать биты/байты в/из регистры/стек/ОЗУ, разобрал циклы и условные переходы. А вот с вызовом системных функций - беда. Если кому не лень, запостите, пожалуйста сюда кусок кода с открытием, чтением/записью нескольких байт, закрытием файла, именно в AT&T синтаксисе, ибо gcc :)


$ as --help |grep intel
-mmnemonic=[att|intel] use AT&T/Intel mnemonic
-msyntax=[att|intel] use AT&T/Intel syntax

gcc -masm=intel

anon_666
()

Собственно, там ничего ассемблеро-специфичного почти нет. Кладутся в стек аргументы, вызывается функция, результат в eax.

Вообще же, у gcc есть ключик -S, который генерирует асм-файл из .c. Так что можно просто экспериментировать с этим и смотреть, что получится.

Web-development

Разделом ошиблись.

vkos ★★
()

> А вот с вызовом системных функций - беда

Про беду правильно говорите ибо нет единого способа прямого обращения к syscall'ам - все зависит от платформы.

anonymous
()
Ответ на: комментарий от vkos

Извините, в первый раз на ЛОРе. Я исправлюсь, честно :) а за ключик -s - спасибо, попробую. Где-то неделю назад мне пришла в голову мысль, что неплохо было бы дизассемблировать код Сишной программы, взял в одну руку x86dis и скомпиленный файлик программы на Си, но получил листинг на несколько тысяч строк чего-то совсем неудобоваримого с кодом вроде: [code] 00000008 00 00                            addb    %al, (%eax) 0000000A 00 00                            addb    %al, (%eax) 0000000C 00 00                            addb    %al, (%eax) 0000000E 00 00                            addb    %al, (%eax) [/code] или идущих один за другим jmp ведущим в разные точки. Так что на такой тип решения задачи я забил. :)

jmp
() автор топика
Ответ на: комментарий от jmp

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

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.