LINUX.ORG.RU

Релиз Yasm 1.0.0

 , , ,


1

0

Yasm - распространяемый под лицензией BSDL ассемблер для x86 и x86_64 платформ с поддержкой синтаксисов nasm и gas, частично tasm , форматов binary, ELF32, ELF64, 32/64-bit Mach-O, RDOFF2, COFF, Win32/64.

Несмотря на уже широкое использование yasm в различных opensource проектах, это первая не-бета версия, автором были достигнуты следующие цели:

  • Полная поддержка NASM-синтаксиса для основных целевых платформ
  • Поддержка синтаксиса GAS (GNU assembler / binutils)
  • source-level отладка с использованием DWARF2 или CodeView 8.0 (VS2005)
  • Поддержка TLS (Thread local storage) для ELF32/64 и SEH (structured exception handling) для Win32/64
  • Поддержка наборов инструкций новейших процессоров AMD XOP/FMA4/CVT16 (Bulldozer) и Intel AVX (Sandybridge)

страница проекта

>>> Подробности и загрузка

★★★★★

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

Ответ на: комментарий от Sun-ch

>> На ЯВУ с врукопашную реализованым «флагом переноса» вам компилятор такой огород состроит - закачаетесь. Да еще с условными переходами.

Чувак покажи на асме решение очень простой задачи. Есть матрица МхN,

Мы ему про фому, а он нам про Ерему.

Рассказываю для тех, кто не в курсе: при программировании для ПК важно не только чтобы программа правильно работала, но и чтобы на той машине, которая реально стоит дома у Васи Пупкина (и которую он не побежит ради нашей программы обновлять) она работала бы с приемлимой скоростью (т.е., скажем, успевала бы раскодировать видеоряд).

Никто не спорит, что на ЯВУ любая задача с точки зрения реализации алгоритма решается гораздо проще, чем на ассемблере, но иногда работает такая реализация на реальном железе слишком уж медленно.

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

И при чём здесь фортран или библиотеки? Мы не имеем права писать свои библиотеки или писать асм код в проекте? Бред какой-то.

Booster ★★ ()
Ответ на: комментарий от Sun-ch

> (setq x (make-array '(4 2 3) :initial-contents % boot loader for x86

Саныч, вот не надо тока троллить и лепить горбатого.

Этот код некто до тебя любовно написал в машинных кодах или на ассемблере. А в массив его можно хоть на бейсике вставить.

Только вот это не означает что на бейсике можно написать бутлоадер.

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

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

Ой, правда чтоли? А я то думал они только недавно научились выигрывать у чемпионов по счету)

А правда, что скоро выйдет новый нитропентиум-звездочка-звездочка, который решит проблему остановки машины тьюринга?

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

Ну не будет у тебя в явном виде листинга загрузчика на ассемблере. Профит то в чем? Всеравно прийдется со всей этой кухней разбираться.

А ты пробовал в Владивосток пешком ходить, когда люди туда летают на самолетах?

А до появления гражданской авиации люди туда типа не добирались?

Саныч, ты не путай временные затраты на оптимизацию, и принципиальную возмжность/невозможность оптимизации.

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

и в догонку...

Если компиляторы так круты, то почему тот же gcc -O3 зачастую выдает более тормозной код, чем gcc -O2?

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

>Про оптимизацию слил, решил дальше писать бред?

А что не так? Перестановка элементов матрицы - самое то, где ассемблер мог проявить себя в полную силу и нагнуть оптимизатор gcc. Ладно, не хочешь, давай задачу на оптимизацию расчетов.

Вычисление элементарных функций.

sin(1.0). точность - 1 млн. знаков после запятой.

Sun-ch ()
Ответ на: и в догонку... от AF

Re: и в догонку...

а потому что надо уметь писать программы. Знать принципы работы оптимизатора и помогать ему. А не рассчитывать динамически смещения в массиве указателей на функции, вложив их два раза.

Sun-ch ()
Ответ на: комментарий от Sun-ch

Уже писали, что оптимизатор здесь не причём. И что-либо писать и мерятся пиписьками я не стану. Возьмём к примеру вычисление хешей, по-твоему врут, что реализация на ассемблере производительнее на 20%-30% сишного? Ну тогда скажи компилятору, чтобы он использовал инструкцию ROL. Может оптимизатор на что-то и способен, но он не обладает интеллектом как человек, и человек способен оптимизировать много лучше компиляторов. В общем ты упоротый, доказать что-либо невозможно.

Booster ★★ ()
Ответ на: комментарий от Sun-ch

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

Тогда вопрос - как мне на С не используя асм(вставки в том числе) разрешить/запретить прерывания процессора?

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от Sun-ch

>а потому что надо уметь писать программы. Знать принципы работы оптимизатора и помогать ему.
Где уж нам пэтэушникам, мы в Парижах и Лондонах не обучались как Вы. Советую почитать мануалы производителей железа, много нового откроешь для себя. Ты например сможешь объяснить компилятору, что у тебя будет копирование больших блоков данных и чтобы он под это сделал соответствующую оптимизацию(позволяющую ускорить запись в 2-3 раза)? Ну а про SSE я вообще молчу, оптимально это использовать даже ICC не в состоянии. В общем со своей оптимизацией ты слил по-полной.

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

>И что-либо писать и мерятся пиписьками я не стану

потому что ты понял, что сольешь.

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

Интеллектом обладает вся команда разработчиков компилятора (>100 человек), которая собаку съела на знании процессорных архитектур различного типа, а по алгоритмам оптимизации кода люди защищают докторские диссертации.

ты упоротый, доказать что-либо невозможно.

Я опытный, и на ассемблере писал порядка 15 лет.

Вот ты знаешь, к примеру, что процессоры ARM используют формат инструкции, где есть поле, в которое компилятор записывает условие, при котором эта инструкция будет выполнена? А теперь попробуй сделать это руками.

Sun-ch ()
Ответ на: комментарий от Sun-ch

>Интеллектом обладает вся команда разработчиков компилятора (>100 человек),
О да, они лучше знают мой код. Троллишь так просто лол.

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

ну например

peripheral/int.h

unsigned int mips32r2 INTDisableInterrupts(void);

Sun-ch ()
Ответ на: комментарий от Sun-ch

>потому что ты понял, что сольешь.
Слил ты. Пиши сам и доказывай сам себе, мне не надо.

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

А не надо никому знать твой код. У тебя мозгов не хватит оптимизировать руками под современные чипы. Возьмем мой CoreDuo, у него 4 ядра. Давай я буду писать С++, ну скажем порядка 1000 строк, довольно простенькая программа, а ты на асме, с оптимизацией руками и любым трюкачеством, и сравним.

Sun-ch ()
Ответ на: комментарий от Sun-ch

Ты точно упоротый. Кто-то писал, что нужно всё писать на ассемблере и от этого будет профит? Профит будет там где он будет, а не везде, примеры уже приводили.

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

Дело не некотором мифическом профите, а в том, что некоторые считают, что могут писать код эффективнее современных компиляторов и даже интерпретаторов байт-кода для VM.

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

Sun-ch ()
Ответ на: комментарий от Sun-ch

А насчет загрузчиков и прочей системной фигни, я могу сказать, что еще 5 лет назад я покупал raid-контроллер, который имел в своем биосе встроенный веб-сервер и позволял конфигурировать диски через интернет.

Sun-ch ()
Ответ на: комментарий от Booster

Ты например сможешь объяснить компилятору, что у тебя будет копирование больших блоков данных и чтобы он под это сделал соответствующую оптимизацию(позволяющую ускорить запись в 2-3 раза)? Ну а про SSE я вообще молчу, оптимально это использовать даже ICC не в состоянии. В общем со своей оптимизацией ты слил по-полной.

Я кстати тоже пзтэушник. Сварщик по специальности. Просто покажи пример своей мегаоптимизации руками, а мы его обсудим, чего тут воду в ступе толочь. Вот смотри задача умножения квадратных матриц NxN. hint: Используй стратегию чтения блока оперативной памяти, равного по размеру строки кеша и разложи это на 4 ядра.

Sun-ch ()
Ответ на: комментарий от Sun-ch

>Используй стратегию чтения блока оперативной памяти, равного по размеру строки кеша и разложи это на 4 ядра.
Это ещё зачем? Длина строки кэша у разных процессоров различна и это не даст профита. Профит будет в том случае, если у нас не будет обращений между кэш линиями. Да и распараллеливание на потоки компилятор сам не сделает, это нужно указать явно.

И примеры где ручная оптимизация выигрывает, и я и другие уже приводили. Спуск на более низкий уровень иногда даёт немалый профит. К примеру есть инструкции записи минуя кэш, которые в разы увеличивают производительность записи больших блоков памяти. Есть и другие фишки способные дать профит, но на которые не способен не один известный мне яву. Да и вообще есть много реализаций алгоритмов которые вылизаны на ассемблере до нельзя, и на которые не способен не один компилятор по известной причине. Если только захардкодить это дело, но и здесь проблема в том как компилятор должен их определять. Если хочешь могу привести примеры, но копипастить из мануалов не очень по-моему красиво.

Booster ★★ ()
Ответ на: комментарий от Sun-ch

один хрен, это обвяз над функцией, которая написана на асме.

Dark_SavanT ★★★★★ ()

сколько флуда, о чем вообще можно спорить с тем, кто считает что на CoreDuo - 4 ядра ? )

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

>сколько флуда, о чем вообще можно спорить с тем, кто считает что на CoreDuo - 4 ядра ? )
Ещё про Тьюринга было забавно. ^). Вообще Sun-ch видимо большой оригинал.

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

>А чтобы эти библиотеки собрать/портировать в системе уже должен быть ассемблер.

GotoBLAS собирается любым сишным компилятором (gcc, icc), так как весь асм там сидит в сишных файлах. отдельный ассемблер не нужен

annulen ★★★★★ ()
Ответ на: и в догонку... от AF

>Если компиляторы так круты, то почему тот же gcc -O3 зачастую выдает более тормозной код, чем gcc -O2?

компилятор != gcc

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