FAQ по ассемблеру в юниксах

Тема в разделе "WASM.UNIX", создана пользователем STAKANOV, 20 ноя 2005.

  1. Gemoroy

    Gemoroy New Member

    Публикаций:
    0
    Регистрация:
    14 янв 2008
    Сообщения:
    5
    Начнем по возрастающей...
    http://download.savannah.gnu.org/releases/pgubook/ProgrammingGroundUp-1-0-lettersize.pdf
    (GAS) Обязательно к прочтению я считаю.
    http://webster.cs.ucr.edu/AoA/Linux/aoapdf.tar.gz
    (x86)
    http://membres.lycos.fr/placr/a2i.html
    Конвертер AT&T в GAS(Полезная вещь)
    http://www.janw.dommel.be/eng.html
    (норм хелп)
     
  2. drunken_tux

    drunken_tux New Member

    Публикаций:
    0
    Регистрация:
    17 янв 2008
    Сообщения:
    4
    Можно пару примеров написания и использования динамических (shared) библиотек на ассемблере? В документации NASM есть немного об этом, но нормально тема не освещена (ИМХО). Буду очень благодарен!
     
  3. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    drunken_tux
    FASM: http://board.flatassembler.net/topic.php?t=5345

    Полностью согласен. В документации насма тема освещена отвратительно, но это частично связано с тем, что SO не сильно дружественный для ассемблера формат.
     
  4. drunken_tux

    drunken_tux New Member

    Публикаций:
    0
    Регистрация:
    17 янв 2008
    Сообщения:
    4
    Спасибо, разобрался довольно быстро. Как я понял, нужно писать обычный базонезависимый код. Плохо, что в никсах нет ничего похожего на dll, чтобы можно было писать как обычно, не задумываясь над стартовым адресом. Сразу видна ориениация на C программистов. А базонезависимый код я и вручную загрузить сумею, зачем мне механизмы системы?
     
  5. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    drunken_tux
    SO (Shared Object) - полная аналогия DLL
     
  6. drunken_tux

    drunken_tux New Member

    Публикаций:
    0
    Регистрация:
    17 янв 2008
    Сообщения:
    4
    Ага, только на ассебмлере писать эти самые SO неудобно.
     
  7. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    пользуйся GCC (в смысле компилировать ассемблерный код)
    там просто
     
  8. VEhES

    VEhES New Member

    Публикаций:
    0
    Регистрация:
    13 окт 2007
    Сообщения:
    17
    Ребят, подскажите пожалуйста про ввод и вывод данных. Про read() и write() это понятно, но есть ли что-нить типа "cout <<" и "cin >>" (из iostream) или printf(); и skanf();.

    Заранее спасибо.
     
  9. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    VEhES
    printf, scanf, cin, cout -- средства ввода-вывода языков С/С++ и никакого отношения к UNIX не имеют. Они есть в стандартной библиотеке С/С++.
     
  10. VEhES

    VEhES New Member

    Публикаций:
    0
    Регистрация:
    13 окт 2007
    Сообщения:
    17
    Значит только read() и write()?
     
  11. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    iostream и потоки ввода-вывода в С/С++ являются частью стандарта, а значит есть всюду, где есть компилятор языка. Если пишешь на С, то можешь пользоваться и printf и scanf. Если на С++, значит, есть iostream со всеми его методами.
     
  12. VEhES

    VEhES New Member

    Публикаций:
    0
    Регистрация:
    13 окт 2007
    Сообщения:
    17
    я наверно не так выразился... я имею в виду ввод/вывод в ассемблере в линуксе. Вводить и выводить информацию в выполняющийся процесс я могу только с помощью системных вызовов или для этого есть еще какой-нить механизм?
     
  13. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Есть механизмы, которые предоставляют библиотеки. Например, библиотека С предоставляет те же printf/scanf. iostream тоже доступен, но сложнее.

    Чую, надо описать более подробно. Скомпилированные ф-ии хранятся в библиотеках, из которых потом вызываются. Поэтому запросто можно вызвать ф-ию printf, например, из ассемблерного кода. Однако, придется расплатиться тем, что необходимо провести инициализацию библиотеки поддержки С у себя в программе. На самой программе это никак не отразится, разве что придется объявить и экспортировать функцию main, которую библиотека вызовет сама, когда будет готова к использованию.
     
  14. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    =) а есть фак только для Мак ОС ???
     
  15. KiNDeR

    KiNDeR New Member

    Публикаций:
    0
    Регистрация:
    13 июн 2003
    Сообщения:
    258
    Адрес:
    Russia
    Мак ОС - на сколько я знаю это форк от FreeBSD...
     
  16. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    значит фак для фри бсд надо ? ..вообще масм помойму под мак нету
     
  17. VEhES

    VEhES New Member

    Публикаций:
    0
    Регистрация:
    13 окт 2007
    Сообщения:
    17
    Nasm есть. Аналогичный синтаксис... почти :)
     
  18. KiNDeR

    KiNDeR New Member

    Публикаций:
    0
    Регистрация:
    13 июн 2003
    Сообщения:
    258
    Адрес:
    Russia
    то что справедливо для FreeBSD, версии с которой начался МакОС, то справедливо и для МакОС, но сейчас в ней столько нагородили, что я не уверен... не работал с ней :)
    и как уже сказали постом выше есть nasm и еще есть fasm, gas и as. fasm удобней (хотя кому как) - gas и as универсальней...
    + мое мнение, если ты не системщик, не пишешь узкоспециализированные проги, критичные ко времени выполнения или размеру(обработка графики, криптография, де/архивация), тебе не нужен базонезависимый код и не хочешь поиметь много гемороя при переносе кода на другую систему/платформу, то для юзермодного приложения ассемблер мало чем поможет... это справедливо практически для всех Unix-like систем.
     
  19. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    Да это понятно =) у кого как я ненормальный как мне сказали , асм форевер ))))))))
     
  20. KiNDeR

    KiNDeR New Member

    Публикаций:
    0
    Регистрация:
    13 июн 2003
    Сообщения:
    258
    Адрес:
    Russia
    да, забыл добавить, http://int80h.org/ - FreeBSD Assembly Language Tutorial