STAKANOV Ты верно понял; для составления FAQ'a мало просто собрать ссылки, нужно их систематизировать. А кто лучше сделает это, чем сами юниксоиды?
Свершилось Первый FAQ по использованию ассемблера в юникс - http://stakanov.nm.ru/as/asm_unix_faq.html Думаю, никто не против того, чтобы обсуждать его здесь?
попозже сделаю, сейчас маленький таймаут, предлагаю естественно потом закрепить полученный результат наверху, тут вроде так можно. Пока еще не одного замечания по содержанию ((((
<ul type=disc> <li> Q: Можно ли писать в юниксе на Ассемблере? <li> Указать ссылки на офиц сайты (если есть), упомянуть FASM. <li> Вариант 1. А где остальные? <li> Указать соглашение вызовов. <li> К ссылкам добавил бы www.FreeBSD.org что ли </ul>
это вариант первого вопроса или когда так спрашивают, то имеею ввиду "корректно ли писать на ассемблере в юникс" ? Уже поменточки линки себе сделал, а насчет fasm сильно сомневаюсь. Когда я его смотрел в последний раз, то он вроде должен был работать, но не заработал. Хотя если найдется кто-то кто использует FASM в юниксах... А то придется вспомнить еще о YASM, FLASM ... а это что? да ну ) единственная причина чтоб добавить, это проявление уважения ) не думаю, что в этом есть необходимость ) хотя если только для людей, что увидев этот FAQ захотят переехать на фрю ))))))
Желательно, чтобы FAQ не превратился в набор ссылок. На вопрос должен следовать ответ, а не отфутболивание на http. А наборы ссылок - их море, в частности на opennet.ru, зачем делать ещё один.
Исходя из того что в текущей директории лежит файлик hello-world.s 1. gcc hello-word.s -o hello-world здесь возможно использование всяких --nostdlib и прочих, но тогда действительно проще разделить компиляцию и линковку, и линковать при помощи ld. 2. make hello-world 3. [f10]-t-c )) запуск команды `make -k' из Emacs -- это дополнительно полагаеться на существование в текущей директории Makefile'а с дефолтовой целью к чему здесь оговорка про freebsd? libc на любой системе, присутствует обязательно. И больших проблем стоит заставить систему работать без неё. Также можно любую систему заставить работать без libc, но это уже специальная ситуация. /usr/src/linux/arc/i386/kernel/syscall_table.S в лине (точнее на glibc-based системе) более удобным способом _изучения_ является info libc. хотя man'ы тоже никто не отменял. кстати Q и A перепутаны
как я понял речь идет о варианте с glibc, этот вариант одинаков для всех ОС нужен сам файл hello-word.s rgo а тебя как упомянуть (ник, контакты)?
IceStudent А ты был прав про FASM, оно правда работает, да и статья с пример на wasm.ru есть. Может из нее и пример возьму, если никто лучше не предложит а тебя как упомянуть среди авторов?
Код (Text): .data msg: .string "Hello world." .text .globl main main: pushl $msg call puts xorl %eax, %eax pushl %eax call exit
Хотя если найдется кто-то кто использует FASM в юниксах... Найдётся для fasm в приведённом можно первую строку написать Код (Text): format ELF executable и тада ни ld, ни gcc не нужны
B_108 c FASMом мы разобрались - он на FreeBSD ставиться, собирается и работеат у меня просто устаревшая информация была насчет сильно сомневаюсь, на FreeBSD точно только объектник получается FAQ нуждается в варианте "hello world" для LINUX c системными вызовами.
STAKANOV Вообще, я имел ввиду соглашение о передаче параметров при вызове функции. То есть, FASTCALL, CDECL, STDCALL. Как ты уже сказал, в Линуксе через регистры, в FBSD — через стек. Вот уточни, как именно. Расписывать что и как не нужно, если соглашение стандартное. Да не надо меня упоминать, я к юниксам никакого отношения не имею.