LINUX.ORG.RU

Опубликована система команд Эльбрус

 


1

4

http://elbrus.ru/efficient_elbrus_programming_book_2020-05

Кто хочет написать свой компилятор или доработать gcc/clang/whatever — велкам!

ЗЫ Кто хочет написать новость - тоже велкам.

Перемещено Zhbert из linux-hardware

★★★★★

clang

Пытались LLVM использовать против Radeon карт с VLIW архитектурой (HD1000-HD6000) и IA64 (Itanium), обе попытки провалились так и ничего не родив. Пытавшиеся объяслянли что llvm никак не подходит для трансляции в vliw.

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

да вроде как есть vliw в llvm, всякие dspшечки типа hexagom. да и радеон вполне себе llvm для шейдеров юзает.

другое дело - эльбрус по сути «неуловимый Джо», потому сомневаюсь что кто-то что-то запилит…

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

да и радеон вполне себе llvm для шейдеров юзает.

Нет, r600 который для VLIW (микроархитектура TeraScale) не юзает, новые GPU который GCN юзают для компиляции шейдеров.

anonymous ()

Полистал. Это для прикладных разработчиков. Компилятор на этом не написать. Значения опкодов для команд где? Нету. До свидания.

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

Полистал. Это для прикладных разработчиков. Компилятор на этом не написать. Значения опкодов для команд где? Нету. До свидания.

Зачем для компилятора опкоды?

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

Нет, r600 который для VLIW (микроархитектура TeraScale) не юзает,

Ладно, я точно не знаю, мне так запомнилось, его делали в 2012 году и даже на phoronix были бенчмарки в которых LLVM не уступал, включался он через R600_LLVM=1, короче я не знаю. Может действительно, сейчас против VLIEW r600 в mesa работает LLVM компилятор.

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

потому сомневаюсь что кто-то что-то запилит…

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

Oberstserj ()
Последнее исправление: Oberstserj (всего исправлений: 1)
Ответ на: комментарий от alexanius

gcc, вот например, машинный код не генерирует

Генерирует по -c, выплёвывает asm на -S

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

devl547 ★★★★★ ()
Последнее исправление: devl547 (всего исправлений: 1)
Ответ на: комментарий от devl547

Генерирует по -c, выплёвывает asm на -S

Да, но есть нюанс. Для того чтобы сгенерировать ассемблер, ему нужен as, который находится в binutils и не является частью gcc.

Можно подробно посмотреть что там вызывается по опции -v

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

Так изначально разговор про то что «нельзя написать компилятор потому что нет опкодов». Без опкодов компилятор пишется ничуть не хуже чем с ними.

Если что, то Эльбрусовский lcc точно также не знает опкодов :)

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

Без опкодов компилятор пишется ничуть не хуже чем с ними.

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

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

Вот был бы еще эмулятор, или доступен запуск фрагментов в онлайн для тестов хеловорлодов.

Дока читается кстати легко, что значит не просто переводчик, а писали люди которые в теме предмета.

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

Генерирует по -c, выплёвывает asm на -S

GCC (cc1, cc1plus), сколько его помню, никогда не выплёвывал машинный код, только ассемблерные листинги для as (GNU Assembler).

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

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

Нет. Компиляция в контексте программирования - это перевод программы с исходного языка в целевой. Выше уже три человека написали как работает gcc.

Дока читается кстати легко, что значит не просто переводчик, а писали люди которые в теме предмета.

Ну да. А переводчик откуда куда должен был бы её писать?

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

Ну да. А переводчик откуда куда должен был бы её писать?

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

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

Если это намёк

Зачем тогда намеками отвечаеть на первоначальный вопрос про перевод? Я другой аноним, просто решил дальше поиграть в намёки.

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

Binutils не напишешь без опкодов - это да. Но зачем?

Зачем мне компилятор, который не способен создать исполняемый файл для запуска на целевой платформе?

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

Это детали реализации конкретного тулчейна. Ну захотели они разделить стадии на несколько утилит. Можно и в одной утилите реализовать. Но ты решил позанудствовать и прицепился к деталям.

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

Это не детали, а важный момент в архитектуре системы. Как раз для того чтобы не нужно было каждому компилятору ещё и работу с опкодами делать (ты бы ещё и компоновку каждый раз заново делать предложил). Ровно по такому же принципу в компиляторах стали разделять переднюю и заднюю часть. Для своего языка не нужен свой кодогенератор, достаточно только парсера.

Ты написал что без опкодов не сделать свой компилятор, но ведь это совершенно не так.

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

Если уж про архитектуру, то фронтенд это не только и не столько парсер.

Ну в зависимости от обстоятельств - да. Нужна только передняя часть с транслятором в представление конкретного компилятора.

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

Зачем мне компилятор, который не способен создать исполняемый файл для запуска на целевой платформе?

Мне – нужен, у меня ассемблер есть, могу поделиться.

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

Т.е. это вариант «собираю на x86 бинарники для e2k»? Или что?

Тут полLORа пяткой в грудь себя било, что они нам сейчас тут родят GCC/LLVM, если им дадут систему команд. Дали - можно начинать пилить GCC/LLVM. Текущего вполне достаточно.

SkyMaverick ★★ ()

Кто хочет написать свой компилятор или доработать gcc/clang/whatever — велкам!

Бинарного представления нет, так что ассемблер написать не получится. А без ассемблера это всё не нужно.

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

Это не команда. Команда - это приказ к действию, а «так точно» это аналог «да».

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

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

компилятор сразу может генерировать машинный код

А может этого и не делать. Может сгенерировать листинг ассемблера и вызвать сам ассемблер.

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

Ну раз так, то уже лучше. Только вот получение команды фиксируется ответом «есть» с последующим её исполнением, а «так точно» следует отвечать только в том случае, если товарищ майор спросит понятна ли его команда.

anonymous ()