Форум программистов, компьютерный форум, киберфорум
Assembler: Linux
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.66/32: Рейтинг темы: голосов - 32, средняя оценка - 4.66
5 / 5 / 0
Регистрация: 27.10.2009
Сообщений: 34
1

Ассемблирование в LInux

21.12.2009, 00:36. Показов 6603. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как писать и компилировать на ассемблере в Linux?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.12.2009, 00:36
Ответы с готовыми решениями:

Разработать двухпросмотровый ассемблер, реализующий ассемблирование программ
Доброго времени суток! Ребята дали такое задание разработать двухпросмотровый ассемблер,...

Ассемблирование программы в DosBox
Путь к DosBox C:\ASM\ASM15. Запускаю прогу присваиваю папку через mount . Потом провожу операцию...

Раздельное ассемблирование для создания com-файла
Почему-то не получается создать один com файл с помощью раздельного ассемблирования. Вот...

Ошибка Kernel driver not installed (rc=-1908) linux в VirtualBox (Linux Mint)
При попытке запустить ВМ в VB вылетает ошибка Kernel driver not installed (rc=-1908)Смотрел в...

19
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
21.12.2009, 00:48 2
Писать в редакторе, компилировать компилятором, линковать линкером. Все как в винде и досе.
0
5 / 5 / 0
Регистрация: 27.10.2009
Сообщений: 34
21.12.2009, 16:29  [ТС] 3
А как запустить компиляцию из строки (я просто не знаю).
Вот например в С: $ gcc file_name.c -o file_name1.c
А на ассемблере как. Я не студент и подсказка нужна только потому, что спросить не у кого. Я не люблю спрашивать, кроме крайней необхрдимости. Спасибо!
0
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
21.12.2009, 16:30 4
Bash
1
2
nasm -f elf -o t.o t.s
ld -o t t.o
При условии, что в t.s код на интел-синтаксисе и установлен nasm.
0
5 / 5 / 0
Регистрация: 27.10.2009
Сообщений: 34
21.12.2009, 16:37  [ТС] 5
В любых ли дистрибутивах прилагается nasm? Я сейчас использую Mandriva Linux 2008. Я вообще почему спрашиваю. Мне Linux привычнее. В ассемблере я новичок, но очень хочу изучить. В принципе мне всё равно где начинать, в Windows или Linux. Но в Винде пока всё соберешь в кучу. А Linux обычно в себе содержит всё, что надо (нужно только знать, где это найти).
0
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
21.12.2009, 16:44 6
В линуксе, как правило, все находится в репозиториях дистрибутива, поэтому далеко бегать не надо. В крайнем случае можно найти исходники и собрать из них.
0
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
21.12.2009, 16:52 7
Если вы собираетесь программировать на асме под линуксом, может быть вам сразу начинать с AT&T синтаксиса? В этом случае можно начать делая асм вставки в сишном коде и компилируя с помощью gcc.
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
21.12.2009, 16:54 8
В любом случае в каждом дистре должен быть gas(команда as), но он использует AT&T-синтаксис, который намного менее распространён, чем интеловский.
P.S. Хм... у меня оказывается есть nasm Хотя может я сам его и поставил, не помню уже
0
5 / 5 / 0
Регистрация: 27.10.2009
Сообщений: 34
21.12.2009, 17:05  [ТС] 9
Дело в том, что учусь по "букварям", а там в основном всё рассматривается через призму Windows. А поскольку нет малейших навыков в ассемблере, то подскажите более конкретно набор инструментов для создания программы. О синтаксисе AT&T я ничего не знаю. В от в одной книге пишут: "Скачайте MASM или TASM, линковщик такой-то, отладчик такой-то. Уже в другой книге "не гарантируют, что не будет ошибок, если если использовать TASM". Эта неразбериха просто угнетает. Неужели действительно так трудно стать на позицию новичка и объяснить просто, что если хотите сделать программу, вам надо то-то и то-то, а всё остальное не от Бога. И потом, пишу (для Винды), "надо компилировать только в DOSе. Это как, должна стоять ОС DOS на компе, или эмулятор поверх Win XP? Очень много вопросов. Не хочется показаться тупым, но честно говоря, книги достаточной ясности не внесли.
0
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
21.12.2009, 17:11 10
Боюсь, что учебники для для доса/виндоса не помогут програмированию на асме в линуксе. Потому как оно отличается для каждой из ОС.
Цитата Сообщение от bug Посмотреть сообщение
Это как, должна стоять ОС DOS на компе, или эмулятор поверх Win XP?
В винде есть встроеный эмулятор доса его вполне хватает для многих задач.
1
5 / 5 / 0
Регистрация: 27.10.2009
Сообщений: 34
21.12.2009, 17:16  [ТС] 11
То есть, не получится как с С/С++, что код одинаковый (в основном), отличается компиляция?
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
21.12.2009, 17:20 12
Здесь простые примеры(+какие нужны инструменты и как компилировать) для gas и nasm под Lunix
http://la.kmv.ru/howto/quickstart.html
1
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
21.12.2009, 17:21 13
Если вы будете писать целиком программу на асме, то нет.
Хотя бы даже потому что, даже, чтобы на экран вывести надпись в досе используется 21h прерывание, в виндосе - апи функции, а в линуксе - сервис int 80h. Да еще и синтаксис у каждой программы-ассемблера немного отличается.
Другое дело, если писать на нем не целиком программу, а только как вставки, например, для вычисления чего-нибудь и без вызова сервисов, то этот код должен будет работать на всех x86 машинах.
0
5 / 5 / 0
Регистрация: 27.10.2009
Сообщений: 34
21.12.2009, 17:40  [ТС] 14
First of all you need assembler (compiler) -- nasm or gas. Вот, опять-таки, какой из них лучше или как правильно спросить, есть ли разница какой применять, или это в зависимости от целей?
0
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
21.12.2009, 17:43 15
nasm - синтаксис Intel
Assembler
1
2
3
4
5
        mov     edx,len ;third argument: message length
        mov     ecx,msg ;second argument: pointer to message to write
        mov     ebx,1   ;first argument: file handle (stdout)
        mov     eax,4   ;system call number (sys_write)
        int     0x80    ;call kernel
gas - синтаксис AT&T
Assembler
1
2
3
4
5
    movl    $len,%edx   # third argument: message length
    movl    $msg,%ecx   # second argument: pointer to message to write
    movl    $1,%ebx     # first argument: file handle (stdout)
    movl    $4,%eax     # system call number (sys_write)
    int $0x80       # call kernel
Это две формы записи одного и того же кода.
0
5 / 5 / 0
Регистрация: 27.10.2009
Сообщений: 34
21.12.2009, 18:02  [ТС] 16
Значит, синтаксис Intel в nasm более универсален? Если функционально это ни на что не влияет, то наверное лучше изучать его. Тогда можно будет использовать его и для Linux Windows при необходимости. Или я не так понял?
0
Evg
Эксперт CАвтор FAQ
21280 / 8302 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
21.12.2009, 18:28 17
Цитата Сообщение от bug Посмотреть сообщение
А как запустить компиляцию из строки (я просто не знаю).
Вот например в С: $ gcc file_name.c -o file_name1.c
А на ассемблере как. Я не студент и подсказка нужна только потому, что спросить не у кого. Я не люблю спрашивать, кроме крайней необхрдимости. Спасибо!
gcc t.c -S -o t.s - из файла .c получаешь файл .s (ассемблерный)
gcc t.s -c -o t.o - получаешь объектный файл
gcc t.o -o a.out - получаешь исполняемый файл

Добавлено через 5 минут
Цитата Сообщение от bug Посмотреть сообщение
Значит, синтаксис Intel в nasm более универсален? Если функционально это ни на что не влияет, то наверное лучше изучать его. Тогда можно будет использовать его и для Linux Windows при необходимости. Или я не так понял?
Без надобности лучше эти дела не перемешивать: под виндами делать так, как принято у виндузовщиков, под линухом писать так, как принято у линуксоидов. В своё время приходилось компилить какую-то программу, где буквально 10 строк они написали на ассемблере с каким-то экзотическим синтаксисом. Т.е. чтобы скомпилять эту программу, мне понадобилось ставить этот идиотский ассемблер, тот в свою очередь захотел какие-то библиотеки (тоже идиотские), эти библиотеки внутри себя содержали какой-то (идиотский) скрипт, требующий какой-то (идиотский) тул. И весь это секс только потому, что кто-то поленился 10 строк кода перевести на "принятый" в линухе формат ассемблерного написания
1
5 / 5 / 0
Регистрация: 27.10.2009
Сообщений: 34
21.12.2009, 19:12  [ТС] 18
Это же, соответственно и исполняемые файлы будут работать только в соответствующих ОС?
0
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
21.12.2009, 19:30 19
А вы видели программы, которые могут работать везде ?
0
Evg
Эксперт CАвтор FAQ
21280 / 8302 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
21.12.2009, 20:27 20
Цитата Сообщение от bug Посмотреть сообщение
Это же, соответственно и исполняемые файлы будут работать только в соответствующих ОС?
Естественно. Когда ты пишешь программу на языке программирования, то вся платформо-зависимость спрятана в библиотеках
0
21.12.2009, 20:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.12.2009, 20:27
Помогаю со студенческими работами здесь

Подскажите ide c# под linux чтобы компилировался файл для linux
Подскажите ide c# под linux чтобы компилировался файл для linux не как в monodevelop

Linux mint + win 8 + uefi + hibernate - пропал загрузчик linux
Здравствуйте, скажу сразу, линукс установил впервые, поэтому может вопрос будет нубский. На ноуте...

Нужен компилятор под linux mint или linux ubuntu
Нужен компилятор под linux mint или linux ubuntu. Желательно голенький компилятор без редактора, и,...

Разметка в Linux жесткого диска для дуалбут MS-DOS и Linux
У меня, значит, на стационарном старичке стоит жесткий на 2 Тб. Win XP такие цифры не знает, а вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru