С Новым годом! Форум программистов, компьютерный форум, киберфорум
Assembler: Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/37: Рейтинг темы: голосов - 37, средняя оценка - 4.62
 Аватар для bug
5 / 5 / 0
Регистрация: 27.10.2009
Сообщений: 34

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

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

Студворк — интернет-сервис помощи студентам
Как писать и компилировать на ассемблере в Linux?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.12.2009, 00:36
Ответы с готовыми решениями:

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

Ассемблирование программы в DosBox
Путь к DosBox C:\ASM\ASM15. Запускаю прогу присваиваю папку через mount . Потом провожу операцию tasm и мой файл. Все хорошо. Но когда я...

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

19
 Аватар для Goodwin98
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
21.12.2009, 00:48
Писать в редакторе, компилировать компилятором, линковать линкером. Все как в винде и досе.
0
 Аватар для bug
5 / 5 / 0
Регистрация: 27.10.2009
Сообщений: 34
21.12.2009, 16:29  [ТС]
А как запустить компиляцию из строки (я просто не знаю).
Вот например в С: $ gcc file_name.c -o file_name1.c
А на ассемблере как. Я не студент и подсказка нужна только потому, что спросить не у кого. Я не люблю спрашивать, кроме крайней необхрдимости. Спасибо!
0
 Аватар для Gravity
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
21.12.2009, 16:30
Bash
1
2
nasm -f elf -o t.o t.s
ld -o t t.o
При условии, что в t.s код на интел-синтаксисе и установлен nasm.
0
 Аватар для bug
5 / 5 / 0
Регистрация: 27.10.2009
Сообщений: 34
21.12.2009, 16:37  [ТС]
В любых ли дистрибутивах прилагается nasm? Я сейчас использую Mandriva Linux 2008. Я вообще почему спрашиваю. Мне Linux привычнее. В ассемблере я новичок, но очень хочу изучить. В принципе мне всё равно где начинать, в Windows или Linux. Но в Винде пока всё соберешь в кучу. А Linux обычно в себе содержит всё, что надо (нужно только знать, где это найти).
0
 Аватар для Gravity
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
21.12.2009, 16:44
В линуксе, как правило, все находится в репозиториях дистрибутива, поэтому далеко бегать не надо. В крайнем случае можно найти исходники и собрать из них.
0
 Аватар для Goodwin98
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
21.12.2009, 16:52
Если вы собираетесь программировать на асме под линуксом, может быть вам сразу начинать с AT&T синтаксиса? В этом случае можно начать делая асм вставки в сишном коде и компилируя с помощью gcc.
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
21.12.2009, 16:54
В любом случае в каждом дистре должен быть gas(команда as), но он использует AT&T-синтаксис, который намного менее распространён, чем интеловский.
P.S. Хм... у меня оказывается есть nasm Хотя может я сам его и поставил, не помню уже
0
 Аватар для bug
5 / 5 / 0
Регистрация: 27.10.2009
Сообщений: 34
21.12.2009, 17:05  [ТС]
Дело в том, что учусь по "букварям", а там в основном всё рассматривается через призму Windows. А поскольку нет малейших навыков в ассемблере, то подскажите более конкретно набор инструментов для создания программы. О синтаксисе AT&T я ничего не знаю. В от в одной книге пишут: "Скачайте MASM или TASM, линковщик такой-то, отладчик такой-то. Уже в другой книге "не гарантируют, что не будет ошибок, если если использовать TASM". Эта неразбериха просто угнетает. Неужели действительно так трудно стать на позицию новичка и объяснить просто, что если хотите сделать программу, вам надо то-то и то-то, а всё остальное не от Бога. И потом, пишу (для Винды), "надо компилировать только в DOSе. Это как, должна стоять ОС DOS на компе, или эмулятор поверх Win XP? Очень много вопросов. Не хочется показаться тупым, но честно говоря, книги достаточной ясности не внесли.
0
 Аватар для Goodwin98
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
21.12.2009, 17:11
Боюсь, что учебники для для доса/виндоса не помогут програмированию на асме в линуксе. Потому как оно отличается для каждой из ОС.
Цитата Сообщение от bug Посмотреть сообщение
Это как, должна стоять ОС DOS на компе, или эмулятор поверх Win XP?
В винде есть встроеный эмулятор доса его вполне хватает для многих задач.
1
 Аватар для bug
5 / 5 / 0
Регистрация: 27.10.2009
Сообщений: 34
21.12.2009, 17:16  [ТС]
То есть, не получится как с С/С++, что код одинаковый (в основном), отличается компиляция?
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
21.12.2009, 17:20
Здесь простые примеры(+какие нужны инструменты и как компилировать) для gas и nasm под Lunix
http://la.kmv.ru/howto/quickstart.html
1
 Аватар для Goodwin98
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
21.12.2009, 17:21
Если вы будете писать целиком программу на асме, то нет.
Хотя бы даже потому что, даже, чтобы на экран вывести надпись в досе используется 21h прерывание, в виндосе - апи функции, а в линуксе - сервис int 80h. Да еще и синтаксис у каждой программы-ассемблера немного отличается.
Другое дело, если писать на нем не целиком программу, а только как вставки, например, для вычисления чего-нибудь и без вызова сервисов, то этот код должен будет работать на всех x86 машинах.
0
 Аватар для bug
5 / 5 / 0
Регистрация: 27.10.2009
Сообщений: 34
21.12.2009, 17:40  [ТС]
First of all you need assembler (compiler) -- nasm or gas. Вот, опять-таки, какой из них лучше или как правильно спросить, есть ли разница какой применять, или это в зависимости от целей?
0
 Аватар для Goodwin98
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
21.12.2009, 17:43
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
 Аватар для bug
5 / 5 / 0
Регистрация: 27.10.2009
Сообщений: 34
21.12.2009, 18:02  [ТС]
Значит, синтаксис Intel в nasm более универсален? Если функционально это ни на что не влияет, то наверное лучше изучать его. Тогда можно будет использовать его и для Linux Windows при необходимости. Или я не так понял?
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
21.12.2009, 18:28
Цитата Сообщение от 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
 Аватар для bug
5 / 5 / 0
Регистрация: 27.10.2009
Сообщений: 34
21.12.2009, 19:12  [ТС]
Это же, соответственно и исполняемые файлы будут работать только в соответствующих ОС?
0
 Аватар для Goodwin98
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
21.12.2009, 19:30
А вы видели программы, которые могут работать везде ?
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
21.12.2009, 20:27
Цитата Сообщение от bug Посмотреть сообщение
Это же, соответственно и исполняемые файлы будут работать только в соответствующих ОС?
Естественно. Когда ты пишешь программу на языке программирования, то вся платформо-зависимость спрятана в библиотеках
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.12.2009, 20:27
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru