Поиск:

Ответ в темуСоздание новой темы Создание опроса
> asm for Linux, Где взять документацию? 
:(
    Опции темы
BISON*
  Дата 8.7.2003, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 8.7.2003

Репутация: нет
Всего: 1



Я решил попробовать asm для Linux у меня есть информация о синтаксисе AT&T, но ничего нет о системных вызовах. Если что-то знаете,то напишите, я заранее Вам благодарен.
PM MAIL WWW   Вверх
Chingachguk
Дата 9.7.2003, 08:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Кое-что есть в книге Зубкова С.В.:

Цитата

11. Программирование на ассемблере в среде UNIX
Операционная система MS-DOS, получившая дальнейшее развитие в виде Windows, долгое время была практически единственной операционной системой для персональных компьютеров на базе процессоров Intel. Но с течением времени мощность процессоров выросла настолько, что для них стало возможным работать под управлением операционных систем класса UNIX,
...
11.4. Программирование с использованием libc
Все программы для UNIX, написанные на С, постоянно обращаются к различным функциям, находящимся в libc.so или других стандартных или нестандартных библиотеках. Программы и процедуры на ассемблере, естественно, могут делать то же самое. Вызов библиотечной функции выполняется обычной командой call, а передача параметров осуществляется в соответствии с С-конвенцией: параметры помещают в стек справа налево и очищают стек после вызова функции. Единственная сложность здесь состоит в том, что к имени вызываемой функции в некоторых системах, например FreeBSD, приписывается в начале символ подчеркивания, в то время как в других (Linux и Solaris) имя не изменяется. Если имена в системе модифицируются, имена процедур, включая main(), написанных на ассемблере, также должны быть изменены заранее.

Посмотрим на примере программы, выводящей традиционное сообщение «Hello world», как это делается:

// helloelf.s
// Минимальная программа, выводящая сообщение "Hello world"
// Для компиляции в формат ELF
//
// Компиляция:
// as -о helloelf.o helloelf.s
// Компоновка:
// (пути к файлу crt1.o могут отличаться на других системах)
// Solaris с SunPro С
// ld -s -о helloelf.sol helloelf.o /opt/SUNWspro/SC4.2/lib/crt1.о -lс
// Solaris с GNU С
// ld -s -o helloelf.gso helloelf.o
// /opt/gnu/lib/gcc-lib/i586-cubbi-solaris2.5.1/2.7.2.3.f.1/crt1.о -lс
// Linux
// ld -s -m elf_i386 -o helloelf.lnx /usr/lib/crt1.o /usr/lib/crti.o
// -L/usr/lib/gcc-lib/i586-cubbi-linuxlibc1/2.7.2 helloelf.o -lc -lgcc
// /usr/lib/crtn.o
//
        .text
// код, находящийся в файлах crt*.o, передаст управление на процедуру main
// после настройки всех параметров
        .globl    main
main:
// поместить параметр (адрес строки message) в стек
        pushl      $message
// вызвать функцию puts (message)
        call      puts
// очистить стек от параметров
        popl      %ebx
// завершить программу
        ret

        .data
message:
        .string    "Hello world\0"

В случае FreeBSD
...



--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
BISON*
Дата 9.7.2003, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 8.7.2003

Репутация: нет
Всего: 1



Цитата(Chingachguk @ 9.7.2003, 08:24)
Кое-что есть в книге Зубкова С.В.:

Та информация которая мне известна я взял из Зубкова, мне нужно знать как непосредственно обращаться к ядру ОС (т.е. не использовать библиотеки).

Это сообщение отредактировал(а) BISON* - 9.7.2003, 09:22
PM MAIL WWW   Вверх
Chingachguk
Дата 9.7.2003, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Там же (ниже) вроде есть про int 80h (для Linux) или какой-то там call far на 0007:00000000 ?...


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
BISON*
Дата 9.7.2003, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 8.7.2003

Репутация: нет
Всего: 1



Цитата(Chingachguk @ 9.7.2003, 10:58)
Там же (ниже) вроде есть про int 80h (для Linux) или какой-то там call far на 0007:00000000 ?...

int 80h для системных вызовов #4(вывод на экран), #1(выход), а мне нужно например ввод данных, запись на диск и т.д. + что должны содержать регистры при int 80h.
PM MAIL WWW   Вверх
Chingachguk
Дата 9.7.2003, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Гм, я в linux'е был без году неделя, но вроде там есть все исходняки вплоть до ядра (на моем red hat их не было ;((( ) ? Их можно анализировать ?...


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
NightGoblin
Дата 15.7.2003, 02:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1021
Регистрация: 24.11.2002
Где: 127.0.0.1

Репутация: 1
Всего: 11



/usr/share/man/man2 + /usr/include/asm/unistd.h = knock yourself out ;)


--------------------
Kernel panic: /dev/null overflow!
GCS/IT/MU/O d-@ s: a- C++$>++++$ ULSB(+++) P+++ L+++>++++ !E W++(-) N o? K w-- O? M>+ V? PS+ PE Y+ PGP+>+++ t- 5 X+ R- !tv b+ DI+ D+ G e++ h--- r++ y?
B4F1 54B6 8738 26CD 5125 0581 B923 9273 FE59 1981
PM MAIL WWW ICQ   Вверх
oleg1973
Дата 16.7.2003, 03:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 7
Всего: 34



а что про http://www.linuxassembly.org не слыхали?
там всееее есть smile.gif)))
вплоть до 2.4 кернела syscallы


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0846 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.