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 ★★★★★ ()
Ответ на: комментарий от 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 ()
Ответ на: комментарий от alexanius

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

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

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

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

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

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

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

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

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

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

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

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

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

SkyMaverick ★★ ()

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

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

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

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

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

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

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

anonymous ()