LINUX.ORG.RU
решено ФорумTalks

[Советов трэд] Ассемблер


0

1

Вот нас учат в универе какойто ху^W^W какому то не кошерному бреду. Мы под дос кодим в фасме. Посоветуйте среду под этими нашими линуксами и, если можно, сайт с описаниями вызовов.

>Мы под дос кодим в фасме.

Ну так и кодь на здоровье. Всё-равно толк от него лишь в теории существует.

На линуксах он не нужен, ибо не совсем удовлетворяет философии ОС.

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

Какие критические и где именно? Даже если и так, то нет смысла париться с этим сейчас. Когда надо будет, так освоишь за часы после практики с фасм.

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

Какие хз, это так агенство ОБС сообщило.

gopnick
() автор топика
Ответ на: комментарий от AptGet

Этому господину кофе с коньяком, там то что я искал.

gopnick
() автор топика

А оно вам надо? Его проходят дабы разъяснить студентам, как работает компилятор и тонкости оптимизации программ. Мы тоже в TASM'е программы писали.

Nebuchadnezzar ★★★★
()

какие еще есть бесплатыне компиляторы асма? крмое fasm (или он хорош) надо просто в универ для учебы притащить, унвиер не может что-либо купить

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

>там же другой ассемблер, в этих наших
Так ведь FASM прекрасно работает в этих наших и компилирует под эти наши Эльфов, хоть 32-битных, хоть 64-битных. Другое дело, что он сам по себе хренов.

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

>Я боюсь спросить, чем может быть хренов компилятор ассемблера

Я его щупал давно, но, вроде бы, версия сильно не увеличилась.

1.Нет локальных переменных. Ковыряй, Вася, стек вручную. Хотя были локальные структуры (вроде как) и в начале каждой процедуры вставлялось «mov ebp, esp».
2.Директива invoke (я ковырял под Win32, но не уверен, что с вызовами в ELF там лучше) не проверяет даже количества параметров, потому что никаких прототипов, как в MASM, там не задается.
3.С макроязыком были проблемы. В частности, ошибки при вызове макросов вызывали невменяемые сообщения, поскольку макрос частично парсился и разворачивался, а уже потом компилятор понимал, что что-то не так.
4.Были ошибки в приложенных заголовках и несовместимости в приложенных макросах. Кто бы мог подумать, что «struc» и «struct» работают по-разному, хотя задачу выполняют одну и ту же?
5.Очень ограниченный sizeof.
6.Таблица импортов пишется целиком руками.

Может, еще что-то было, но я уж позабыл.

Это ведь штука достаточно простая.

Вот мне показалось, что авторы FASM думали именно так. Поэтому все сделали просто. Потом по заявкам телезрителей стали накручивать поверх простой основы расширения на своем ограниченном макроязыке. Получилось нехорошо, как с точки зрения программиста-пользователя, так и с точки зрения реализации.

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

>Нет локальных переменных

Есть макросы, которые делают то, что нужно.

Директива invoke

Да, сделана макросом. В этом вся проблема. Кажется были какие-то костыли для определения прототипов, но точно сказать не могу.

что «struc» и «struct» работают по-разному

Сделано ради совместимости с MASM или TASM.

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

а что, дос-прерывания и ассемблер как-то коррелируют?
я последний раз использовал фасм, для написания процессорно-зависимой математики, чтобы я точно знал, что моя математика будет работать на блоках sse2-sse3 с нужной мне оптимизацией

TERRANZ ★★★★
()

Привет! Что тебе нужно:
1. gcc (скармливать листинги)
2. info gas
3. info ld
4. google: System V ABI
5. google: System V ABI amd64(i386) supp

Можно писать, использую прерывания, но ИМХО подключай glibc и юзай ее.

Как писать:
0. Препод дал задачу.
1. Пишешь программу на C.
2. gcc -S ...
3. Смотришь листинг, правишь его.
4. ???
5. Profit!!

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

Если программа полностью на ассемблере, как было у нас в универе, то как минимум нужен ввод-вывод

goingUp ★★★★★
()

Правильно вас учат. ASM есть ASM, хоть под DOS, хоть под Windows, хоть под Linux. Изучать ASM под DOS предпочтительнее, сразу разберётесь с адресацией, прерываниями и т.п.

Если вам не интересно, может вы выбрали не ту профессию?

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

> Только в венде, в линуксе таких недаразумений нет

А если найду? :)

Relan ★★★★★
()

> Вот нас учат в универе какойто ху^W^W какому то не кошерному бреду. Мы под дос кодим в фасме.

Всё правильно. Изучите как работает реальный режим, DOS и 16-итный код. Потом можно будет перейти к защищенному режиму, 32- и 64-битному коду и любой другой современной ОС.

Выбор ассемблера для обучения сводится, в общем-то, к выбору синтаксиса — Intel или AT&T. В GNU принят последний, в Windows — первый. Из свободных кросс-платформенных ассемблеров (есть под GNU, *BSD, Windows, Mac OS X) с Intel синтаксисом рекомендую nasm. поддерживает 16-, 32- и 64-битный код, все основные форматы объектников, своевременно добавляет новые инструкции.

Отдельная тема — ассемблерные вставки в коде на С. Много подводных камней. Нужно хорошее знание синтаксиса этих вставок и надо понимать какой код сгенерирует компилятор вокруг.

Relan ★★★★★
()

лорчую NASM как самый адекватный из бесплатных кроссплатформенных трансляторов. писал с его помощью мини ОС реального режима на курсовик по системному ПО.
и да, ассемблер не ху, а нужен, чтобы понимать, как процессор твой джава-питон-окамл-код внутри себя лопатит, точнее во что его превращает компилятор/интерпретатор. Несмотря на то, что в чистом виде асм нигде сегодня не используется, базовые принципы знать надо

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

>базовые принципы знать надо
этому обычно учат не на курсе ассемблера, этому (ну по крайней мере у нас) учат на курсе системотехники, где мы разбирали как работает процессор внутри, как работает АЛУ, регистры и другие потроха процессора

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

Мне интересно, поэтому и интересуюсь.

gopnick
() автор топика

DOSBOX + FreeDOS + любой удобный текстовый редактор и сам FASM.

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

Критические места обычно заассемблированы в мультимедийных библиотеках (чтобы эффективно использовать SIMD-инструкции) и в ядре. В остальном - нафиг такое не надо.

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

> На линуксах он не нужен, ибо не совсем удовлетворяет философии ОС.

Товарищ философ! Пока вы выбираете какие подходы актуальны для той или иной ОС, нормальные люди выбирают ОС для конкретной задачи. И если, к примеру, мне нужно оптимизировать реализацию задачи для кластера (да, кластер - это почти всегда означает линукс), то если надо, и за ассемблер возьмусь.

Что касается широко используемых библиотек - тоже есть ассемблерные, та же GNU Multiple Precision. Так что попридержите свое «ненужно».

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

> какие еще есть бесплатыне компиляторы асма? крмое fasm (или он хорош) надо просто в универ для учебы притащить, унвиер не может что-либо купить

yasm, понимает как at&t так и intel синтаксисы

overmind88 ★★★★★
()

vim + nasm + make

описание вызовов - дохучи в инете.

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

>Я боюсь спросить, чем может быть хренов компилятор ассемблера? Это ведь штука достаточно простая.

не совсем. Тот же tasm поддерживал объектную модель программирования.

dikiy ★★☆☆☆
()

И да, если код должен быть под дос, то можешь забыть про то, чтобы писать его на линукс.

Я в свое время отлично писал такие лабы под dosemu. И тебе рекомендую тоже.

dikiy ★★☆☆☆
()

еще была под дос программа, которая показывала доки в режиме гиперссылок. Доки были специально по прерываниям dos и bios. Очень полезная штука была. Забыл только название. толи xdoc толи xview. Что-то в этом духе. Может кто вспомнит.

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

Компилятор - двоякое понятие. Компилятором может быть как программа которая только компилирует исходник в объектный файл, так и программа, которая представляет собой сразу транслятор+линкер(т.о. на выходе - уже исполнимый файл). Фраза «компилятор ассемблера» действительно режет слух, даже не могу объяснить почему.. Может потому что привык к паре транслятор + линкер.

nnm
()

игнор за один только ник.

JFreeM ★★★☆
()

> Мы под дос кодим в фасме. Посоветуйте среду под этими нашими линуксами

Фасм.

сайт с описаниями вызовов.

unistd32.h из сорцов ядра и man 2 <функция>.

damnemall
()

>Мы под дос кодим в фасме

счастливчики, мы кодили в MASM, причем я с трудом уговорил препода сдавать ему в MASM 6(он хотел в 5)

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

>> Nasm же, gas еще.

код на gas тупо не примут :)

Почему? Я у своих студентов принимал и такой, и такой. Разницы-то, по сути, нет. Хотя, если препод дуремар, то возможно всё.

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