Автор Андрей Меньшаков задал вопрос в разделе Другие языки и технологии
ассемблер под линукс и под виндовс различаются и чем? и получил лучший ответ
Ответ от Миоко Таканава[гуру]
Ассемблер в бóльшей степени зависит от процессора. Но это если писать программу, работающую просто так, не получающую входных данных и не выводящую никуда результат своей работы.
Например, программы для процессоров Intel/AMD и ARM будут разительно отличаться друг от друга, даже написанные для родственных операционных систем: Linux на IBM PC-совместимом и Android (если не ошибаюсь, ОС на базе Linux-ядра) .
А если пишется программа, которая получает откуда-то входные данные и выводит результаты работы на какое-либо устройство, то неизбежно придётся обращаться к услугам операционной системы.
К слову сказать, в MS DOS это делать не обязательно. Можно напрямую взаимодействовать с аппаратурой. Эта операционная система не протестует против прямой работы с оборудованием.
Но в современных ОС: и в Windows, и Linux прямое обращение к ресурсам железа из пользовательских программ невозможно из-за разграничения прав доступа.
Поэтому для общения с пользователем и с внешними устройствами используются системные вызовы. В Windows – это прерывание с номером 2Eh, в Linux – 80h (в MS DOS для системных нужд используется прерывание 21h).
Прикладные программы Windows в подавляющем большинстве не используют системные вызовы, обращаясь к операционной системе с помощью функций API, находящихся в системных динамических библиотеках (DLL). В Linux тоже часто используют библиотечные функции из файлов c расширением .so вместо и вместе с системными вызовами.
А API-функции в разных операционных системах в общем случае имеют разные имена и разные соглашения о передаче параметров и возвращении результата выполнения. Для ассемблера это выливается в загрузке аргументов функций для каждой ОС в разные регистры или размещение в стеке в разном порядке. При использовании системных вызовов, кстати, тоже различие не только в номере прерывания, но и в различном назначении регистров.
Различается синтаксис программ, написанных для разных компиляторов. Главным образом различается написание директив и макросов, но это не является отличительной особенностью программ для той или иной операционной системы.
А различные нотации написания команд процессора (Intel и AT&T) с появлением кроссплатформенных компиляторов – это уже история и не зависит от ОС. GAS и YASM поддерживают обе нотации и в Windows, и в Linux. FASM и NASM в обеих операционках поддерживают только нотацию Intel.
Например:
И два в одном:
Кстати, по последней ссылке наглядный вам пример, как сильно отличается одна и та же программа, написанная для Linux и Windows даже для одного и того же компилятора.
Ассемблер не имеет привязки к операционке - это наверное единственный язык напрямую работающий с железом и отличия версий идут относительно процессора т. е. например ZX spectrum, 8080, 80286, 80386, 80486, Pentium I, Pentium I MMX, и т. д.
оличется результатом работы линкера
ну и используемыми системными функциями (если не хочешь получить программу которая никак и ни счем не взаимодействует)
Нотации
Linux - Unix - AT&T Labs
DOS - Windows - Intel
Подскажите, как запустить YASM в UBUNTU.
ну да. на оффсайте сырцы. качаешь,
./configure
make
make install
молодец
подробнее...
Assembler с нуля
Вам, прежде всего, нужна среда программирования Fresh IDE.
В ней можно писать на FASM'е
подробнее...
В каком году появилась операционная систем LINUX, и кто является ее прямым создателем
Linux (Линукс) — ядро операционной системы, разработка которого была начата финским студентом
подробнее...
Помогите с GSS Visual Assembler 3.9.8
Но у вас же нет самой программы. Ни одной исполняемой команды в вашем листинге не наблюдается.
подробнее...
Нужна программа на Ассемблере [Assembler, SOS =D]
1ая. SASM IDE (NASM + макросы для вывода), на базе Linux, но с миним. переделками заработает в
подробнее...
Что такое Linux и с чем его едят ?
Linux - это ОС, развивающаяся параллельно ms.Windows. Только созданием Линукса занимаются
подробнее...
посоветуйте книгу по Microsoft SQL Server 2005 - 2008 для начинающего.
>> C#, Delphi, Assembler и т. д.
Знать надо как можно меньше языков, но как можно глубже.
подробнее...
лучшие Рок песни
Five Finger Death Punch - No One Gets Left Behind
Five Finger Death Punch - The Bleeding
подробнее...
подскажите что такое калибровка вариатора, в чём она заключается?
Процедура калибровки стартового сцепления вариатора
Внимание:
Когда возникает любая из
подробнее...
Какой язык программирования учить первым?
Советую C, даже если ты школьник.
Синтаксис не намного сложнее, чем Pascal. Зато потом другие
подробнее...
помогите пожалйста,перевод на"деловом английком"
Directors should go for a dinner together
2. The faksimalnoe message should be received
подробнее...
Помогите написать программу на ассемблере "Hello world" и прокоментировать каждую строчку!!!
Вы не можете найти правильную программу, потому что ищете, не задавшись очень важными для
подробнее...
Помогите перевести текст с русского на английский..очень надо
Hippy culture - one of the most famous ancient dvizheniy.Hippi soft and not aggressive. As you
подробнее...
Напишите сочинение на английском языке! С переводом на русский! "О вашей школе, о ваших классах, какой предмет нравится "
My school is a three-storeyed building.
It is quite big with sport ground behind it, inside
подробнее...
AT&T ассемблер. Дайте ссылки на мануалы, а то загуглился уже до посинения, но нашел только для Intel ассемблера.
Плохо гуглите, товарищ. Я хоть и знаком только с intel-синтаксисом, но, . Помочь больше не могу,
подробнее...