OSDev
http://osdev.su/

какой ассемблер выбрать - NASM или FASM?
http://osdev.su/viewtopic.php?f=6&t=556
Страница 1 из 4

Автор:  111DJAGERNAUT111 [ 23 май 2012, 21:37 ]
Заголовок сообщения:  какой ассемблер выбрать - NASM или FASM?

Я только начинаю изучать устройство операционных систем и прошу посоветовать мне ассемблер, который лучше подходит для написания ОС. Я пока не собираюсь писать свою собственную операционную систему, но хочу поупражняться и получить опыт программирования на ассемблере. Заранее спасибо.

Автор:  DJ PhoeniX [ 23 май 2012, 21:47 ]
Заголовок сообщения:  Re: какой ассемблер выбрать - NASM или FASM?

Подходят они одинаково, но я выбрал fasm как более гибкий. Синтаксис и скорость компиляции у них почти одинаковые, так что разницы особой нет.

Автор:  Bargest [ 23 май 2012, 21:52 ]
Заголовок сообщения:  Re: какой ассемблер выбрать - NASM или FASM?

Вообще FASM изначально создавался именно для написания операционок (читал где-то историю ФАСМа).
Nasm тоже в этом плане нормальный, но все же FASM действительно более удобный и гибкий, если уметь пользоваться.
А вот если нужно просто получить опыт программирования на асм, то MASM тоже нужно брать во внимание: вся работа под винду (проги, дрова) лучше делается на MASMе, потому что для него много примеров и исходных кодов, в т.ч. вроде есть на MSDN. Правда FASM категорически отличается от MASM'а.

Автор:  111DJAGERNAUT111 [ 23 май 2012, 21:58 ]
Заголовок сообщения:  Re: какой ассемблер выбрать - NASM или FASM?

А может кто-нибудь дать ссылки на учебники по FASM на русском языке?

Автор:  Bargest [ 23 май 2012, 22:40 ]
Заголовок сообщения:  Re: какой ассемблер выбрать - NASM или FASM?

Учебников не знаю, знаю перевод официального справочника FASM какой-то старинной версии. С тех пор фасм получил много новых возможностей в области макросов. Официальный англ справочник есть в стандартном архиве фасма.
Станислав много рекламировал книгу Аблязова "Программирование на ассемблере на платформе x86-64", но я в этой книге только глазами пробежал раздел про SMP и APICи, так что сказать почти ничего не могу. Этот раздел был очень похож на перевод AMD Architecture programming manual, vol. 2, части Local APIC.

А вообще русский здесь, к сожалению, плохой помощник. Информацию по чему-то, связанному с OSDev'ом, лучше сразу искать на англ, т.к. на русском почти ничего нет.

Автор:  Yoda [ 24 май 2012, 10:55 ]
Заголовок сообщения:  Re: какой ассемблер выбрать - NASM или FASM?

Предпочитаю NASM. У них немного разная идеология. NASM написан на C, а FASM на FASMе :D. Поэтому NASM переносим на любую платформу, а FASM нет. Кроме того, NASM легче поддерживать. А вообще очень легко взять и попробовать то и другое.

Автор:  DJ PhoeniX [ 24 май 2012, 11:48 ]
Заголовок сообщения:  Re: какой ассемблер выбрать - NASM или FASM?

Yoda писал(а):
NASM переносим на любую платформу, а FASM нет ... NASM легче поддерживать
Lolwut? Фасм - первая прога, которую портируют ВСЕ осеписатели, ибо ему нужны только выделение памяти и чтение/запись файлов.

Про "попробовать и то и другое" - согласен.

Автор:  Yoda [ 24 май 2012, 12:38 ]
Заголовок сообщения:  Re: какой ассемблер выбрать - NASM или FASM?

DJ PhoeniX писал(а):
Lolwut? Фасм - первая прога, которую портируют ВСЕ осеписатели...

Yoda писал(а):
NASM переносим на любую платформу, а FASM нет

Новая ОС не является платформой. А вот ARM, например, является.

Автор:  DJ PhoeniX [ 24 май 2012, 12:46 ]
Заголовок сообщения:  Re: какой ассемблер выбрать - NASM или FASM?

Yoda писал(а):
Новая ОС не является платформой. А вот ARM, например, является.

Ом, да, надо всё-таки иногда спать ночью... :)

Хотя тоже спорное утверждение. Для фасма нужно знать опкоды на этой платформе, и можно, в общем то, собирать. А для насма нужен как минимум рабочий C++-компилятор.

Автор:  SII [ 24 май 2012, 12:58 ]
Заголовок сообщения:  Re: какой ассемблер выбрать - NASM или FASM?

DJ PhoeniX писал(а):
Yoda писал(а):
Новая ОС не является платформой. А вот ARM, например, является.

Ом, да, надо всё-таки иногда спать ночью... :)

Хотя тоже спорное утверждение. Для фасма нужно знать опкоды на этой платформе, и можно, в общем то, собирать. А для насма нужен как минимум рабочий C++-компилятор.


Сделать ФАСМ кросс-компилятором для другой платформы можно: просто переписывается его часть, касающаяся трансляции собственно машинных инструкций. Существует вариант для АРМ, Например. Однако перенести его самого на другую платформу невозможно, поскольку придётся для этого переписать весь целиком, ведь он написан на ассемблере ИА-32.

В то же время любой (ну, почти любой) проект на языке высокого уровня можно перенести на другую платформу, если имеется кросс-компилятор для этой платформы. Например, существуют версии ГеЦеЦе, генерирующие код для АРМ, но работающие на ПК (сам такой пользуюсь, хотя использую входящую в его состав Аду, а не Си). Правим в НАСМе части, касающиеся трансляции машинных инструкций, транслируем его кросс-компилятором -- и получаем выполняемый файл НАСМа, который можно запускать на АРМе. Вот ГеЦеЦе портировать будет уже много сложней, хотя тоже возможно, конечно.

Страница 1 из 4 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/