LINUX.ORG.RU

Ассемблеры для Linux: Сравнение GAS и NASM


0

0

В этой статье объясняются некоторые наиболее важные синтаксические и семантические различия двух самых популярных ассемблеров для Linux® - GNU Assembler (GAS) и Netwide Assembler (NASM), а также различия в базовом синтаксисе, переменных и доступе к памяти, обработке макросов, функциях и внешних подпрограммах, работе со стеком и методиках простого повторения блоков кода.

>>> Подробности

★★★

Проверено: Shaman007 ()

Ответ на: комментарий от kto_tama

NASM прикольнее, там символов меньше.

P.S. А где Sun-ch? Уже с утра новость про Sun есть!

fashka
()

Давно пишу intel синтаксисом и компилю fasm думаю стоит попробовать AT&T синтаксис =)

MikeDM ★★★★★
()

Пока газ умеет mips, arm и тд, а nasm нет, - и сравнивать нечего.

упячка - haners

anonymous
()

Можно ли NASM использовать как ассемблер для gcc? Поясняю: чтобы gcc генерировал ассемблерный код в NASM-синтаксисе и выдавал его NASM-у для, собственно, ассемлирования.

anonymous
()
Ответ на: комментарий от anonymous

По сабжу сказать ничего не могу, но ...

> оно никому не надо, кроме красноглазых извращенцев

... могу заверить, что это не так.

Bohtvaroh ★★★★
()
Ответ на: комментарий от anonymous

>Всякие микроконтроллеры?

для распростанённых есть всякие визуальные среды и программируют их, чуть ли не мышкой...

ассемблер надо знать для общего развития... а то не поймёшь, чем регистровая машина отличается от стековой и почему ява тормозит

anonymous
()

Телки по сслке нет даже без адблока, а по теме NAS не шарит arm, так что в топку.

Farcaller ★★
()

По ссылке есть очень отвратный перевод на русское язык. Я не мочь это читать. Можете вы дать линк на оригинал?

anonymous
()

По ссылке не ходил, но статью осуждаю. В ней сравнивается несравнимое, ибо gas разработан в первую очередь для того, чтобы обрабатывать вывод cc1/cc1plus. Подразумевается, что если вам надо писать на ассемблере, используйте asm volatile (...). При разработке ОС, всяких кодеков и пр. этого бывает недостаточно, но большинство разработчиков все равно пишут на gas, дабы не громоздить зависимостей.

А сравнивать надо ассемблеры, изначально предназначенные для компилирования кода, написанного руками. К примеру тот же nasm и yasm.

anonymous
()
Ответ на: комментарий от anonymous

А читать вы умеете? Или не повелись на бабу? Там внизу ссылко есть.

dont
()
Ответ на: комментарий от anonymous

Там сравниваются не столько GAS с NASM, сколько синтаксисы Intel и AT&T.

zenkov ★★★
()
Ответ на: комментарий от paul7

>> долой синтаксический сахар! Даешь восьмеричный код! 11727!

> mov @pc,(pc)+ ? а толку?

жж0те

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

> asm volatile (...)

А где про него почитать? У ассемблерных вставок GCC синтаксис какой-то нечеловеческий... Я имею в виду не синтаксис самого языка ассемблера, а именно конструкции "asm".

Сам не имел дело с ассемблерными вставками со времён Turbo C.

AsphyX ★★★
()
Ответ на: комментарий от anonymous

>оно никому не надо, кроме красноглазых извращенцев не надо, т.к. есть gas :)

anonymous
()
Ответ на: комментарий от anonymous

Можно ли NASM использовать как ассемблер для gcc? Поясняю: чтобы gcc генерировал ассемблерный код в NASM-синтаксисе и выдавал его NASM-у для, собственно, ассемлирования. anonymous (*) (12.12.2007 14:01:20)

Нельзя - это проблема гцц. Можно только в гцц скормить параметром nasm чтобы оно рюхало асмовые инлайны и пропускало их через nasm.

anonymous
()
Ответ на: комментарий от anonymous

> Можно только в гцц скормить параметром nasm чтобы оно рюхало асмовые инлайны и пропускало их через nasm.

А по-подробнее можно? Как и что надо указывать?

anonymous
()
Ответ на: комментарий от anonymous

чё-то не могу найти про инлайны на NASM. Вероятней всего что я попутал и наврал вам :(

anonymous
()
Ответ на: комментарий от anonymous

>> Пока газ умеет mips, arm и тд, > оно никому не надо, кроме красноглазых извращенцев

То есть вы, как нормальный пацан, а не красноглазый извращенец, серверами, сотовыми телефонами, маршрутизаторами не пользуетесь?

skwish ★★
()

GAS практичнее, ибо интегрирован с gcc и поддерживает кучу архитектур. А NASM больше подходит для написания какой-нибудь программы для x86 целиком на асме, что нигде кроме MenuetOS не пригодится.

xTERM ★★
()
Ответ на: комментарий от anonymous

>Это у тебя идиот, мосх тормозит.... А Ява не тормозит

Да, ты прав. Кстати недавно было выступление о том, что Java уже работает быстрее ассемблера. А в новой версии обещали уменьшить подребление памяти на 102%.

anonymous
()

юоже... что это с ними?! пожалуй первая статья с ibm, чтение которой считаю не пстой тратой времени....

ssvda
()
Ответ на: комментарий от anonymous

> А Ява не тормозит

Щазз. Какая-то куйня-прокся на жабе для компрессирования трафика от tunnel.net еле-еле запускается, захавывает половину ОЗУ, 250 мегабайт, после чего начинаются тормоза.

anonymous
()
Ответ на: комментарий от anonymous

>Да, ты прав. Кстати недавно было выступление о том, что Java уже работает быстрее ассемблера. А в новой версии обещали уменьшить подребление памяти на 102%.

Ничто не может работать быстрее асм(если конечно писал не конченый идиот), а уж тем более Java

pinachet ★★★★★
()
Ответ на: комментарий от pinachet

А вот тут вы батинька не правы... run time optimizations рулят... кстати в джаве - они дествительно рулят... виртуальные функции и инлайнинг там жжёт нипадеццки - в некоторм смысле они там быстрее чем асмовые. Правда даже это не спасает swing... =(

theos ★★★
()
Ответ на: комментарий от pinachet

>Ничто не может работать быстрее асм

это конечно да, но вот

>если конечно писал не конченый идиот

учитывая уровень оптимизаций gcc, равняться нужно не на "конченного идиота", а на "среднего программера с неповрежденным мозгом".

к тому же, наибольшие траты происходят на уровне алгоритмов - поиск за O(N^2) вместо O(log N) ну и так далее.

чем дальше, тем больше убеждаюсь, что кодить на асме бессмысленно - это не портабельно, жуткие проблемы с вычислением формул и абсолютно не портабельно. максимум где знание асм'а нужно - это cpu level в ядре.

generatorglukoff ★★
()
Ответ на: комментарий от AiFiLTr0

1) Сначала аватар наводит на некоторые мысли

2) Далее в инфе пользователя видим "Москва".

3) Гуглим на тему AiFiLTr0 и теорема доказана.

xTERM ★★
()
Ответ на: комментарий от pinachet

>>Да, ты прав. Кстати недавно было выступление о том, что Java уже работает быстрее ассемблера. А в новой версии обещали уменьшить подребление памяти на 102%.

>Ничто не может работать быстрее асм(если конечно писал не конченый идиот), а уж тем более Java

А на 102 процента ты, конечно, внимания не обратил? )

xTERM ★★
()
Ответ на: комментарий от anonymous

>А что сейчас программируют на асме? Всякие микроконтроллеры?

например патчики на бинарники, для которых исходников нема ).

Sagrer
()
Ответ на: комментарий от anonymous

>А в новой версии обещали уменьшить подребление памяти на 102%

X-1.02X=(-0.02X). Оно будет добавлять память, вместо того, чтобы отнимать? Клёво. А когда можно будет грабить корованы?

>Кстати недавно было выступление о том, что Java уже работает быстрее ассемблера

И мне этих веще... мягких французских булочек)

alius
()
Ответ на: комментарий от alius

Вы идиоты? Как можно на полном серьезе отвечать на стёбный пост?

Мля, дайте мне автомат!

balodja ★★★
()
Ответ на: комментарий от anonymous

>Какая-то куйня-прокся на жабе для компрессирования трафика от tunnel.net еле-еле запускается, захавывает половину ОЗУ, 250 мегабайт

научитесь врать убедительно :-)

anonymous
()
Ответ на: комментарий от anonymous

Он не врёт, т.к. самому один раз под GPRS нужен был компрессор трафика, и я глянул на tool.net... мля лучше бы этого не делал) Машину спас только alt+print+b, т.к. это дрянь захавало всю оперативку и машина начала тупо висеть и свистеть винчестером от свопа 8)

Andru ★★★★
()
Ответ на: комментарий от Andru

>я глянул на tool.net... мля лучше бы этого не делал) Машину спас только alt+print+b, т.к. это дрянь захавало всю оперативку и машина начала тупо висеть и свистеть винчестером от свопа 8)

Нет жаба говно конечно, но toonel на моих 128 Мб работает. Может у вас винда?.

anonymous
()
Ответ на: комментарий от anonymous

>>Нет жаба говно конечно, но toonel на моих 128 Мб работает. Может у вас винда?.

да нет, вроде как приведенная мною заветная комбинация клавиш там не пашет :)

ЗЫ: хм... на 128 пашет... видать поперхнулось 1 гигом :D Ну а если серьезно - мб несовместимость каких-то версий или глючная сборка OpenSUSE 10.3, но момент запуска этой проги мне запомниться на всю жизнь))

Andru ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.