Автор |
Сообщение |
|
|
Заголовок сообщения: |
|
|
|
[code]: NOP 0x90 TC, ;[/code]
|
|
|
|
Добавлено: Пн июн 22, 2009 11:56 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Как это выглядит сейчас?
Как это выглядит сейчас?
|
|
|
|
Добавлено: Пн июн 22, 2009 11:50 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Цитата: Я уже постил тот постфиксный ассемблер, которым пользуюсь.
А где он?
[quote]Я уже постил тот постфиксный ассемблер, которым пользуюсь.[/quote]
А где он?
|
|
|
|
Добавлено: Вт июл 17, 2007 14:04 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Гм... ну я скажу так. У меня нет особых проблем с созданием трансляторов Форта под разные архитектуры. Я даже готов "на пальцах" пояснить, как именно это делается - было бы время. Исходя из этих соображений я вижу, что ассемблеры у всех процессоров разные. Для каждого свой форт я бы написал, а вот увязывать их в одну пачку и писать какой-то генератор - тут работа гораздо серьезнее. И все равно придется описать ассемблер каждого из процессоров, а как же? Только в случае независимой работы мы можем свободно делать непереносимые на другой процессор вещи, а при автоматической генерации придется каждый раз смотреть, все ли такое могут сделать. И стоит ли овчинка выделки?
Гм... ну я скажу так. У меня нет особых проблем с созданием трансляторов Форта под разные архитектуры. Я даже готов "на пальцах" пояснить, как именно это делается - было бы время. Исходя из этих соображений я вижу, что ассемблеры у всех процессоров разные. Для каждого свой форт я бы написал, а вот увязывать их в одну пачку и писать какой-то генератор - тут работа гораздо серьезнее. И все равно придется описать ассемблер каждого из процессоров, а как же? Только в случае независимой работы мы можем свободно делать непереносимые на другой процессор вещи, а при автоматической генерации придется каждый раз смотреть, все ли такое могут сделать. И стоит ли овчинка выделки?
|
|
|
|
Добавлено: Вс июл 15, 2007 23:05 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
другими словами -
БОЛЬШОЙ всесторонний язык реализует бесконечное множество алгоритмов
Но - форт - это ОДИН, уже готовый алгоритм, для его реализации достаточно ... можно я не стану заканчивать фразу
другими словами -
БОЛЬШОЙ всесторонний язык реализует бесконечное множество алгоритмов
Но - форт - это ОДИН, уже готовый алгоритм, для его реализации достаточно ... можно я не стану заканчивать фразу
|
|
|
|
Добавлено: Вс июл 15, 2007 13:18 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Хищник, как бы это помягче намекнуть, похоже, метаассемблер чем-то напоминает ...
adress(метаассемблер)mail.ru
Неужели основная идея неосуществлённого метаассемблера так слабо выражена?
МЕНЯТЬ ЧАСТЬ ЯЗЫКА ( даже не языка, а его реализации), а не делать заново весь, т.к. менять весь не надо - задача ограничена
Хищник, как бы это помягче намекнуть, похоже, метаассемблер чем-то напоминает ...
adress(метаассемблер)mail.ru
:D
Неужели основная идея неосуществлённого метаассемблера так слабо выражена?
МЕНЯТЬ ЧАСТЬ ЯЗЫКА ([color=olive]даже не языка, а его реализации[/color]), а не делать заново весь, т.к. менять весь не надо - задача ограничена :<
|
|
|
|
Добавлено: Вс июл 15, 2007 13:13 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Дело отнюдь не в навешивании ялыков Просто от ложной "политкорректности" можно дойти до появления мертворожденных проектов. Что лучше - обсудить проблемы проекта и заранее выявить неудачные решения, или кивать-соглашаться, пока не получится неработающий/неэффективный/неудобный продукт? А "клопы-то, батенька, не разбирают - магистр или не магистр". Программа получится такая, какая получится, и она не заработает хорошо просто "из вежливости".
chess писал(а): "Штрафной круг" придумал не я. Это как раз одно из тех "мест", где развивается язык. Штрафно круг - это лишняя итерация разработки, после которой происходит возврат в исходную точку. С нулевыми результатами, но потерянным временем. chess писал(а): Хищник писал(а): Вот как раз о чем я и говорю - нету абстрактных терминов, чтобы сделать ассемблер для хотя бы десятка навскидку взятых процессоров.
Так всего когда-то не было. И что, Intel Pentium и Microchip PIC поползут навстречу друг другу, меняя топологию кристалла? Еще раз - процессоры уже разные. Промежуточные языки уже есть - P-код, MSIL.... Форт! К ним и можно приводить разные процессоры.... с разной эффективностью. chess писал(а): А кто сказал, что языки развиваются в сторону унификации(упрощения). Похоже все происходит наоборот, как-бы и кто-бы не хотел обратного
Ну видимо тот, кто хочет написать унифицированный ассемблер?
Дело отнюдь не в навешивании ялыков :) Просто от ложной "политкорректности" можно дойти до появления мертворожденных проектов. Что лучше - обсудить проблемы проекта и заранее выявить неудачные решения, или кивать-соглашаться, пока не получится неработающий/неэффективный/неудобный продукт? А "клопы-то, батенька, не разбирают - магистр или не магистр". Программа получится такая, какая получится, и она не заработает хорошо просто "из вежливости".
[quote="chess"]"Штрафной круг" придумал не я. Это как раз одно из тех "мест", где развивается язык. [/quote] Штрафно круг - это лишняя итерация разработки, после которой происходит возврат в исходную точку. С нулевыми результатами, но потерянным временем. [quote="chess"]Хищник писал(а): Вот как раз о чем я и говорю - нету абстрактных терминов, чтобы сделать ассемблер для хотя бы десятка навскидку взятых процессоров.
Так всего когда-то не было.[/quote] И что, Intel Pentium и Microchip PIC поползут навстречу друг другу, меняя топологию кристалла? Еще раз - процессоры [b]уже[/b] разные. Промежуточные языки уже есть - P-код, MSIL.... Форт! :) К ним и можно приводить разные процессоры.... с разной эффективностью. [quote="chess"] А кто сказал, что языки развиваются в сторону унификации(упрощения). Похоже все происходит наоборот, как-бы и кто-бы не хотел обратного[/quote]
Ну видимо тот, кто хочет написать унифицированный ассемблер? :)
|
|
|
|
Добавлено: Вс июл 15, 2007 10:59 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Хищник писал(а): Да нет, это из области "синдрома белой вороны" "У меня пока нет результатов, потому что я решаю очень важную и глобальную задачу"... Я не навешиваю ярлыков. Впрочем, это дело сугубо личное. Хищник писал(а): Не вполне понимаю, что такое "предметная область штрафного круга". "Штрафной круг" придумал не я. Это как раз одно из тех "мест", где развивается язык. Хищник писал(а): Вот как раз о чем я и говорю - нету абстрактных терминов, чтобы сделать ассемблер для хотя бы десятка навскидку взятых процессоров. Так всего когда-то не было. Хищник писал(а): И требования могут быть настолько противоречивы, что какой-то унификации может просто в принципе не быть.
А кто сказал, что языки развиваются в сторону унификации(упрощения). Похоже все происходит наоборот, как-бы и кто-бы не хотел обратного.
[quote="Хищник"]Да нет, это из области "синдрома белой вороны" "У меня пока нет результатов, потому что я решаю очень важную и глобальную задачу"... [/quote] Я не навешиваю ярлыков. Впрочем, это дело сугубо личное.[quote="Хищник"]Не вполне понимаю, что такое "предметная область штрафного круга". [/quote] "Штрафной круг" придумал не я. Это как раз одно из тех "мест", где развивается язык. [quote="Хищник"]Вот как раз о чем я и говорю - нету абстрактных терминов, чтобы сделать ассемблер для хотя бы десятка навскидку взятых процессоров. [/quote] Так всего когда-то не было. [quote="Хищник"]И требования могут быть настолько противоречивы, что какой-то унификации может просто в принципе не быть.[/quote]
А кто сказал, что языки развиваются в сторону унификации(упрощения). Похоже все происходит наоборот, как-бы и кто-бы не хотел обратного.
|
|
|
|
Добавлено: Вс июл 15, 2007 02:11 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
вопрос писал(а): Вот это вот как раз не проблема, т.к. расположение операндов и результата можно выразить в абстрактных терминах. да и по сути, если учесть изменения регистра флагов, х86 тоже трёхадресный.
А что, у PPC разве нет регистра флагов? Он тогда что, четырехадресный получается?
Вот как раз о чем я и говорю - нету абстрактных терминов, чтобы сделать ассемблер для хотя бы десятка навскидку взятых процессоров. Возьмем слишком широко - процессоры начнут "выпадать", не у всех окажутся нужные регистры и возможности. Возьмем слишком узко - наиболее мощные процессоры будут вынуждены пользоваться малой частью своих возможностей. Есть ли выход? Разумеется, есть - написать Форт С учетом особенностей конкретного процессора. Форт сам по себе есть ограничение, он вынуждает нас писать в терминах стековой машины. Разные процессоры имеют здесь разные варианты ускорения, за счет того, что могут упаковать данные в регистры. Но мы осознанно отходим от такого решения, ради того, чтобы писать не на куче ассемблеров, а на одном Форте. Просто нужно, чтобы профессиональный разработчик взял, и аккуратно написал хороший Форт. Это делается один раз для каждого из процессоров, а потом менее квалифицированные программисты могут свободно пользоваться языком - внутри уже есть необходимые улучшения и "обвязки" над наиболее эффективными командами. А тут что получится? Вот пример - свертка массивов. Процессор может вообще не иметь команды умножения, а может иметь сразу умножение с накоплением. Для начала предлагаю рассмотреть вариант такого синтаксиса, который сможет адекватно представить и самый слабый кристалл, и навороченный сигнальник. А умножение с накоплением критично - это всякие мультимедиа, плейеры, цифровые фильтры... вобщем, если будет неэффективно, такой язык просто выкинут после первого взгляда на него.
[quote="вопрос"]Вот это вот как раз не проблема, т.к. расположение операндов и результата можно выразить в абстрактных терминах. да и по сути, если учесть изменения регистра флагов, х86 тоже трёхадресный. [/quote]
А что, у PPC разве нет регистра флагов? Он тогда что, четырехадресный получается? :))
Вот как раз о чем я и говорю - нету абстрактных терминов, чтобы сделать ассемблер для хотя бы десятка навскидку взятых процессоров. Возьмем слишком широко - процессоры начнут "выпадать", не у всех окажутся нужные регистры и возможности. Возьмем слишком узко - наиболее мощные процессоры будут вынуждены пользоваться малой частью своих возможностей. Есть ли выход? Разумеется, есть - написать Форт :) С учетом особенностей конкретного процессора. Форт сам по себе есть ограничение, он вынуждает нас писать в терминах стековой машины. Разные процессоры имеют здесь разные варианты ускорения, за счет того, что могут упаковать данные в регистры. Но мы осознанно отходим от такого решения, ради того, чтобы писать не на куче ассемблеров, а на одном Форте. Просто нужно, чтобы профессиональный разработчик взял, и аккуратно написал хороший Форт. Это делается один раз для каждого из процессоров, а потом менее квалифицированные программисты могут свободно пользоваться языком - внутри уже есть необходимые улучшения и "обвязки" над наиболее эффективными командами. А тут что получится? Вот пример - свертка массивов. Процессор может вообще не иметь команды умножения, а может иметь сразу умножение с накоплением. Для начала предлагаю рассмотреть вариант такого синтаксиса, который сможет адекватно представить и самый слабый кристалл, и навороченный сигнальник. А умножение с накоплением критично - это всякие мультимедиа, плейеры, цифровые фильтры... вобщем, если будет неэффективно, такой язык просто выкинут после первого взгляда на него.
|
|
|
|
Добавлено: Вс июл 15, 2007 01:00 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
к последнему посту
ну так ведь понятно, что речь идет о компромиссе. И по скорости будет ухудшение и по объему кода тоже.
принципиальной разницы нету, двух или трехадресные команды или даже одноадресные. ФВМ достаточно мало требует на самом деле.
Я к тому, что ФВМ не требует особых изысков и всегда можно обойтись одноадресными командами при ее реализации, что достаточно хорошо ложится на много архитектур, пока вроде сильные ограничения на Гарвардской архитекруре процессоров.
а вообще на самом деле я говорю немного о другом, нежели "Вопрос"
Просто захотелось хоть немного конструктива
к последнему посту 8)
ну так ведь понятно, что речь идет о компромиссе. И по скорости будет ухудшение и по объему кода тоже.
принципиальной разницы нету, двух или трехадресные команды или даже одноадресные. ФВМ достаточно мало требует на самом деле.
Я к тому, что ФВМ не требует особых изысков и всегда можно обойтись одноадресными командами при ее реализации, что достаточно хорошо ложится на много архитектур, пока вроде сильные ограничения на Гарвардской архитекруре процессоров.
а вообще на самом деле я говорю немного о другом, нежели "Вопрос" 8)
Просто захотелось хоть немного конструктива 8)
|
|
|
|
Добавлено: Вс июл 15, 2007 00:53 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Цитата: Так вот нет его, этого абстрактного представления Элементарно - PPC (и многие другие процессоры) допускают трехадресные команды. Например, add r3, r6, r9.
Вот это вот как раз не проблема, т.к. расположение операндов и результата можно выразить в абстрактных терминах.
да и по сути, если учесть изменения регистра флагов, х86 тоже трёхадресный.
[quote]Так вот нет его, этого абстрактного представления Элементарно - PPC (и многие другие процессоры) допускают трехадресные команды. Например, add r3, r6, r9. [/quote]
Вот это вот как раз не проблема, т.к. расположение операндов и результата можно выразить в абстрактных терминах.
да и по сути, если учесть изменения регистра флагов, х86 тоже трёхадресный. :D :o
|
|
|
|
Добавлено: Вс июл 15, 2007 00:47 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
chess писал(а): Похоже на заупокойную, правда, с миром. Правда, никто еще не умер(ничего, у нас умирают и не родившись). Да нет, это из области "синдрома белой вороны" "У меня пока нет результатов, потому что я решаю очень важную и глобальную задачу"... chess писал(а): А предметная область "штрафного круга" не имеет прав на существование. Аминь.
Не вполне понимаю, что такое "предметная область штрафного круга". Вот мне надо измерить напряжение и выдать его на индикатор. Для этого надо настроить периферию, принять код с АЦП, перевести его в десятичный вид и вывести на индикатор. Это все команды процессора и процедуры. Оно решается в том числе и на Форте - получается определенный список слов, которые нужны. Это одна предметная область. Другая - мне надо сделать веб-сервер с определенными возможностями. Тогда нужны слова для работы с системными библиотеками и драйверами сетевых устройств. Это тоже определенные требования к языку и системе. Автоматизация конвейера, банковская программа, система платежа за телефон или интернет - это все разные предметные области. И требования могут быть настолько противоречивы, что какой-то унификации может просто в принципе не быть. Можно вписать поддержку SQL и сети в 4 кб? Вопрос риторический. А он будет, потому что в задаче "автоматическое включение лампочки" есть требование "размер памяти не больше 4 кб, потому что ПЗУ большего размера уже дороже, чем допустимо". Собственно, и все - пользователь суперуниверсального Форта будет постоянно натыкаться на эти вот ограничения - то размер слишком большой, то производительность слишком мала. Попытка привести в норму одно приведет к тому, что вылезет другое.
[quote="chess"]Похоже на заупокойную, правда, с миром. Правда, никто еще не умер(ничего, у нас умирают и не родившись). [/quote] Да нет, это из области "синдрома белой вороны" :) "У меня пока нет результатов, потому что я решаю очень важную и глобальную задачу"... :)
[quote="chess"]А предметная область "штрафного круга" не имеет прав на существование. Аминь.[/quote]
Не вполне понимаю, что такое "предметная область штрафного круга". Вот мне надо измерить напряжение и выдать его на индикатор. Для этого надо настроить периферию, принять код с АЦП, перевести его в десятичный вид и вывести на индикатор. Это все команды процессора и процедуры. Оно решается в том числе и на Форте - получается определенный список слов, которые нужны. Это одна предметная область. Другая - мне надо сделать веб-сервер с определенными возможностями. Тогда нужны слова для работы с системными библиотеками и драйверами сетевых устройств. Это тоже определенные требования к языку и системе. Автоматизация конвейера, банковская программа, система платежа за телефон или интернет - это все разные предметные области. И требования могут быть настолько противоречивы, что какой-то унификации может просто в принципе не быть. Можно вписать поддержку SQL и сети в 4 кб? Вопрос риторический. А он будет, потому что в задаче "автоматическое включение лампочки" есть требование "размер памяти не больше 4 кб, потому что ПЗУ большего размера уже дороже, чем допустимо". Собственно, и все - пользователь суперуниверсального Форта будет постоянно натыкаться на эти вот ограничения - то размер слишком большой, то производительность слишком мала. Попытка привести в норму одно приведет к тому, что вылезет другое.
|
|
|
|
Добавлено: Вс июл 15, 2007 00:29 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Хищник писал(а): Супер-форт, ОС, теперь ассемблер Про ВМ вообще молчу, сколько их уже на моей памяти предлагали, с одинаковым итогом. Похоже на заупокойную, правда, с миром. Правда, никто еще не умер(ничего, у нас умирают и не родившись). Хищник писал(а): Так языки-то для предметной области ! Не для еще одного "штрафного круга" по созданию инструмента для компиляции инструмента, который потом будет транслировать исходные текста. Во закручено-то!
А предметная область "штрафного круга" не имеет прав на существование. Аминь.
[quote="Хищник"]Супер-форт, ОС, теперь ассемблер Про ВМ вообще молчу, сколько их уже на моей памяти предлагали, с одинаковым итогом. [/quote] Похоже на заупокойную, правда, с миром. Правда, никто еще не умер(ничего, у нас умирают и не родившись). :) [quote="Хищник"]Так языки-то для предметной области ! Не для еще одного "штрафного круга" по созданию инструмента для компиляции инструмента, который потом будет транслировать исходные текста. Во закручено-то! [/quote]
А предметная область "штрафного круга" не имеет прав на существование. Аминь.
|
|
|
|
Добавлено: Вс июл 15, 2007 00:20 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Так вот нет его, этого абстрактного представления Элементарно - PPC (и многие другие процессоры) допускают трехадресные команды. Например, add r3, r6, r9. И что теперь? Выкинем x86 из рассмотрения (а что, собственно, они смогут сделать с трехадресной командой, если они двухадресные), или капитально урежем возможности PowerpPC? Конечно, можно придумать язык-уродец, который будет через пень-колоду похож на все процессоры, до которых получится дотянуться. Первое действие после ознакомления с ним - плюнуть и на энтузиазме от негативного впечатления написать-таки нормальный ассемблер для одного, второго и третьего из нужных процессоров. Чтобы убедиться, достаточно просто сесть и выписать эти самые команды. А потом взять множество, которое действительно есть у всех из выбранной группы процессоров. И наконец, впечатлиться тем, какие возможности оказались за бортом, с учетом того, что разные процессоры оптимизируются под какие-то применения. На Форте можно упаковать эти ассемблерные команды в форт-определения. А как прикажете делать это в ассемблере?
Так вот нет его, этого абстрактного представления :) Элементарно - PPC (и многие другие процессоры) допускают трехадресные команды. Например, add r3, r6, r9. И что теперь? Выкинем x86 из рассмотрения (а что, собственно, они смогут сделать с трехадресной командой, если они двухадресные), или капитально урежем возможности PowerpPC? Конечно, можно придумать язык-уродец, который будет через пень-колоду похож на все процессоры, до которых получится дотянуться. Первое действие после ознакомления с ним - плюнуть и на энтузиазме от негативного впечатления написать-таки нормальный ассемблер для одного, второго и третьего из нужных процессоров. Чтобы убедиться, достаточно просто сесть и выписать эти самые команды. А потом взять множество, которое действительно есть у всех из выбранной группы процессоров. И наконец, впечатлиться тем, какие возможности оказались за бортом, с учетом того, что разные процессоры оптимизируются под какие-то применения. На Форте можно упаковать эти ассемблерные команды в форт-определения. А как прикажете делать это в ассемблере?
|
|
|
|
Добавлено: Вс июл 15, 2007 00:17 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Всё же, остаётся одна (даже две) проблемы -
- нужен синтаксис абстрактного представления примитивов, т.к. мы имеем просто ассемблерный код - если просто пронумеровать регистры? (reg_1, reg_2) а действия обозначать как в обычном ассемблере (mov, lea, div) ?
нужно кое-что в этих наборах пояснить, я несколько недоучка в форте и ассемблер подзабыл ...
Всё же, остаётся одна (даже две) проблемы -
- нужен синтаксис абстрактного представления примитивов, т.к. мы имеем просто ассемблерный код - если просто пронумеровать регистры? (reg_1, reg_2) а действия обозначать как в обычном ассемблере (mov, lea, div) ?
нужно кое-что в этих наборах пояснить, я несколько недоучка в форте и ассемблер подзабыл ...
|
|
|
|
Добавлено: Сб июл 14, 2007 23:26 |
|
|
|
|