LINUX.ORG.RU

Хочу запилить свой ЯП на асме.

 ,


2

3

Есть у меня некоторые идейки. Основная идея - простота и прзрачность, ну и, я бы сказал, несколько иной, концептуально, подход, но это сложная тема, не влезает в рамки топика.

Тащемта, основные наброски, можно сказать рабочий прототип, уже готов, я его реализовал на js. Основная проблема в скорости. Думаю, логично было бы написать его на асме. Но проблема в том, что как сам асм, так и архитектуру, я знаю чуть меньше чем никак. Это печально.

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

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

Благодарю за ответы.



Последнее исправление: anonimous (всего исправлений: 1)

Чето непонятно _свой ЯП_ ты хочешь или _свой Лисп_. Впрочем оба ненужны.

Это возвращение к корням лиспа

Непонятно зачем к ним возвращаться, там все было довольно игрушечно, как и в схемах этих, прости господи. CL — state of the art, бери и пользуй на здоровье.

seg-fault
()
Ответ на: комментарий от vonenij

Он собрался писать свой язык со скобочками, так? Так почему сразу не писать его на языке со скобочками? Или на чём-то более высокоуровневом?

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

Интересно услышать, что это за задачи.

Ну уш никак не массовое написание высокопроизводительных вещей. За исключением применения тулзов вроде емакса - тады да, я тоже «пишу на лиспе»!!!111

Кто назвал меня жалким неосилятором?

А кто ты есть со своей «любовью» к плюсам?;-)

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

А кто ты есть со своей «любовью» к плюсам?;-)

Всем поголовно любить!

Ну уш никак не массовое написание высокопроизводительных вещей.

Т.е. то что не относиться к миру высокопроизводительных вещей, то уже «ограниченный круг задач»? Более того, если брать расчеты, то какой-нибудь fft вряд ли будет шибко медленнее c++. Я даже щас попытаюсь проверить

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

Да и слухи о мегакрутости лиспов сильно преувеличены - лисп хорош для весьма ограниченного круга задач.

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

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

Всем поголовно любить!

Любить не обязательно, но воспринимать адекватно не мешало бы. А то будешь как Eddy_Em;-)

Более того, если брать расчеты, то какой-нибудь fft вряд ли будет шибко медленнее c++

если брать расчеты, то С++ там еще надо правильно юзать. На С++ очень непростоg писать эффективные программы. Беда в том, что на некоторых ЯП это вообще невозможно...

AIv ★★★★★
()
Последнее исправление: AIv (всего исправлений: 1)

Хочу запилить свой ЯП на асме

Бери fasm и пили на его макросах. Я в своё время на его макросистеме crc32 строк в compile-time считал.

рабочий прототип, уже готов, я его реализовал на js

Лол.

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

Нет.

дайте пожалуйста направление, куда нужно копать.

Учи асм.

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

Что такое эффективная программа? Да твои дифуры с сетками мильёны на мильёны элементов на лиспе быстро не сделаешь, ну а кто претендует-то?

vonenij
()

Но вообще игра не стоит свеч, если только твой ЯП не какой-нибудь сверхспециализированный (например, для жесткого embedded или векторных вычислений), c llvm или gcc даже не стоит тягаться иначе, лучше вложи свой труд в тот же llvm.

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

Во-во. Пока народ с ассемблера на железяках переходит на С, ТС решил на компе сделать обратный процесс...

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от seg-fault

CL — state of the art, бери и пользуй на здоровье.

Слишком сложен синтаксически, слишком много деталей. Думаю не лисп-вей. Если и возьмусь, то в последнюю очередь.

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

Так-так, уже прогресс;-) Тем не менее некоторые и такое делают, используя ЛИСП для всякой изощренной кодогенерации. Но это скорее исключение.

Про остальное сейчас флеймить лень, уже много раз терли. Используй поиск, Люк!

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

Я даже щас попытаюсь проверить

Эх, даже не знаю, как сравнивать. В FFTW написано, что:

If you use FFTW_MEASURE or FFTW_PATIENT mode, then the algorithm FFTW employs is not deterministic:

Так, для сведений:

Есть bordeaux-fft, оно считает DFT на комплексных аргументах. На AMD FX-4170 для массива из 1048576 элементов посчитал за 0.3 секунды. SBCL 1.1.12

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

Просто привел тебя как яркий пример человека, не любящего плюсы;-)

Расслабься.

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

ЛИСП

Кстати, так пишут только тролли. Сейчас пишут так:«Lisp»

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

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

Слушай, или иди найди в поиске 100500 предыдущих лиспорачей, где обсосано со всех сторон для чего и как лисп пригоден, или уймись уже.

Кстати, так пишут только тролли. Сейчас пишут так:«Lisp»

Скажи об этом авторам статьи про лисп в вики, а так же переводчикам книги Хювёнен Э., Сеппянен Й. «Мир Лиспа» В 2-х т. / Пер. с финск.. — М.: Мир, 1990. Она у меня на работе, а так бы я тебе сказал кто эти гнусные животные! Но в любом случае, ты гораздо толще и зеленее, фу быть таким.

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

Скажи об этом авторам статьи про лисп в вики

Тогда смотри в свою вики:

Лисп (LISP, от англ. LISt Processing language — «язык обработки списков»; современное написание: Lisp)

где обсосано со всех сторон для чего и как лисп пригоден, или уймись уже.

Да, блять, такими спецами как ты.

Ладно, ты неадекватен, пойду спать

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

Да, реализовывать CL я не предлагал, и сам бы не взялся, не в моей области интересов.

То есть, как понял, задача реализовать непременно с нуля небольшой язык, используя минимум тулзов (asm). «Пощупать железо». Тогда уж будь последователен. Мануал по асму в зубы, отключиться от инета и да поможет тебе бог :)

seg-fault
()
Ответ на: комментарий от Eddy_Em

Во-во. Пока народ с ассемблера на железяках переходит на С, ТС решил на компе сделать обратный процесс...

Дело совсем не в асме. Дело в в словосочетании «свой ЯП». :)

А на asm до сих пор пишут, когда оптимизируют код под конкретные архитектуры. Тот же libpixman, например. Да и на железяках никто еще от asm не ушел. Открываешь исхокод базовых библиотек для Си - там полно ассемблера.

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

пересмотрел чтоли взгляды

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

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

пересмотрел чтоли взгляды

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

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

Дело совсем не в асме. Дело в в словосочетании «свой ЯП». :)

Дело даже не в словосочетании, а в личности ТС. :) В общем, дело было не бобине... :)

sleepflint ★★★
()

LLVM. А вообще, надо тебя заигнорить уже, ты какой-то упоротый.

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

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

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

При всем уважении, попахивает фанбойством. Я вот тоже из лагеря «нахер эти кресты вместе с крестоносцами» — среди вас столько неадекватов, что как-то не получается адекватно воспринимать. И главное все говорят, что кресты де надо правильно использовать, чтобы сливать анскильных лалок, но о реальных методиках и факторах сливания я ни разу от них не слышал. Кресты это математика, о реальном мире оно имеет плохое представление.

По теме: тс, гугли minimal lisp, есть реализации начиная от десятков строк на сишке.

arturpub ★★
()

Тред не читал и не буду. Посмотри что получилось из c++.

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

Ну уж по сравнению с лисперсписким фанбойством и неадекватом... один лавсанчег чего стоил.

Методик тьма. Литературу не назову, тк сам учился у конкретных людей и работаю в специфической области. В числодробилках, к сожалению, кресты вне конкуренции:-(

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

Со спецами не спорю, раз ч-ки твоя область, значит так оно и есть, тут обычно без вариантов.

Но я например как-то раз читал одну статейку, где чувак выжал из рабочего плюсового кода не менее 9001%, «просто» убрав объекты и паттерны, и положив все так, чтобы заюзать кеш данных, префетч, локалити и прочие железные правила. Тоже случай очень специфичный, там у него какой-то движок был то ли игровой, то ли графический, но показательно, что не все паттерны и идеологически-корректные решения находят отражение в суровой реальности.

По-разному бывает.

arturpub ★★
()

Нахера тебе писать на ассемблере руками? Читай Lisp In Small Pieces, пиши компилятор, не задавай тупых вопросов

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

1) ничего там сложного нет, CL как раз элементарен, если не считать CLOS

2) CL как раз самый лисповый лисп из живых

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

чувак выжал из рабочего плюсового кода не менее 9001%, «просто» убрав объекты и паттерны

«Не все паттерны одинаково полезны» (ц). Что касается объектов, то они не мешают, если не возвращать их по значению при каждом чихе, это правило номер 1.

положив все так, чтобы заюзать кеш данных, префетч, локалити и прочие железные правила.

Вот именно это именно для числодробилок у нас делают чуть более чем успешно на плюсах, получая профит на порядки (!!!), по сравнению с тем же овеянным мифами фортраном;-)

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

погода какая-то весенняя в этом январе задалась, да

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

ТС же ясно написал:

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

а ты про какие-то AMD64. Экий ты наивный, а ещё анонимус. :)

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

Плохо понимаю тогда, что ты имеешь ввиду под «на плюсах»; я насколько помню того автора, он первым делом развернул массив объектов в структуру массивов, чем и огреб сразу половину успеха, а далее по-мелочи кое-что перекладывал, чтобы лучше в перфетч ложилось. Там много пунктов было, но эти основные, и много ворчания — крестов товарищ явно не одобрял :)

Жалко ссылки не осталось, а слов точных не помню чтобы найти.

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

Ну и вообще, вопрос на засыпку (ответ не знаю): если взять современный -std=c99, написать код со всеми restrict, const, inline и прочими, и предположить, что мы умеем в уме разворачивать стл и шаблоны и делаем это сами по требованию, то эквивалентно ли это будет плюсам? То есть равны ли оптимизационные потенциалы семантик этих языков, не беря в расчет, что на сях не всегда пишут так, как формально надо бы?

arturpub ★★
()

ok....

Я так понимаю, что ты интерпретатор делаешь?

Если просто хочешь сделать, чтобы было быстро, пиши на Си.

Если хочешь попробовать, как оно с нуля все делается, то реализуй простенький forth, а на нем уже пиши компилятор/интерпретатор для своего языка.

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

если брать расчеты, то С++ там еще надо правильно юзать. На С++ очень непростоg писать эффективные программы. Беда в том, что на некоторых ЯП это вообще невозможно...

Чего ты конечно же не умеешь. Видя твои темы про «разницу между шалонным и константным аргументом», твоё неосиляторство памяти и неимоверное кол-во ЧСВ. Ты не умеешь писать код, ты не знаешь матчасти - твой код кусок галимой лапши в которой производительности ровно 0.

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

Твои эпичные фразы просто поражают моё вообращение - ты наверное хотел сказать, что эффективно можно писать лишь на некоторых языках - это да. Твои плюсы входят в эти несколько, причем болтаясь на последнем месте. На всех остальных ЯП, кроме этих 3-х писать эффективно невозможно.

Да и вообще, ты же не программист - нахрен ты кукарекаешь о ЯП и программах?

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

Зачёт!

Незачет. Если я пишу ЯП для себя, он не обязан соответствовать вообще каким-либо критериям, и уж тем более, «какие дядя сказал».

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

Зачем ты споришь с этим нулём? Он не отличает языка от реализации - он не знает ни как работает конпелятор, ни как работает память - он тотальная нулина. Он написал кусок говна, который получился лучше другого куска говна и решил, что это заслуга его и плюсов. Не ломай его мирок - он ещё не дорос до понимания того, что у него быстрее не потому, что лучше, а потомучто аналог тотальное говно.

Ну и вообще, вопрос на засыпку (ответ не знаю): если взять современный -std=c99

Это не современный - современные это gnu11, либо gnu99.

написать код со всеми restrict, const, inline и прочими,

restrict - неимеет смысла в нормальном коде, const - абсолютно не имеет семантики в сишке. inline - никто из макак юзать не умеет.

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

Стл - тормазное говно, если ты решил его реализовывать на сишке - ты идиот.

Шаблоны есть в gcc итак, любой константный аргумент - это шаблонный аргумент. Константный не от приписки const, а (is_const(arg)); Шаблоны в плюсах не имеет профитов в нормальном коде - это всё говно для анскильных идиотов, типа того, с кем ты гвооришь.

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

То есть равны ли оптимизационные потенциалы семантик этих языков

Нет, не равен. Сишка обоссывает плюсы в говно, причем тотальное. Потенциал к оптимизации - это не мистические оптимизации конпеляторов, готовое говно и прочее - это отсутвие ограничений и наиболее внятнся трансляция и вменяемая обратная связь.

Ничего из этого у плюсов нет.

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

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

anonymous
()

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

«Быстрость» ЯП определяется возможностью написания на нём идеального кода - дак вот твоя язычек неприспособлен к этому, поэтому написать на нём можно только говно.

Наиболее приспособлены к этому Сишка и АСМ, причем сишка заруливает асм в 95% случаев лишь потому, что это так же + удобней, минималистичней и красивей.

«не изучая премудростей архитектуры, и, особенно, хексов и прочего ч-бства» - ты наваяешь максимум говно без разницы на каком ЯП. Твой жс говно именно по этой причине, ибо даже если ты изучишь это - оно в жс тебе ничего не даст. А вот вменяемые ЯП раскрывают потенциал осиляторства полностью. И эфеективность твоих реализаций прямопропорционально уровню твоего скилла и от яп лишь зависит то - ограничивает ли тебя ЯП, либо нет. Никаких «эффективностей» у ЯП нет - это миф со днища окияна.

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

Всякие арифметики там, переводы из хекс и обратно и прочие арифметические операции, манипуляции с числами

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

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