Стандартная библиотека для ассемблера

Тема в разделе "WASM.PROJECTS", создана пользователем dmit10, 23 ноя 2004.

  1. n0p

    n0p 10010000b

    Публикаций:
    0
    Регистрация:
    7 май 2003
    Сообщения:
    256
    Адрес:
    Новосиbeerск
    Согласен с masquer во всем. Опыта у меня, конечно, меньше раза в 2, но тем не менее.



    Кстати, в споре не был затронут вопрос оптимизации.

    Я на 90% уверен, что ни один универсальный код не даст такой оптимизации, как заточенный под КОНКРЕТНУЮ задачу. 10% я отдал на изыски компилятора, но они характерны только для ЯВУ, а для асма будет 100%.



    Насколько я понял, вы все считаете, что новичок, столкнувшись с проблемой, должен просто поиметь готовое решение своей проблемы и в лучшем случае сравнить код? Я с этим категорически не согласен. Человек совершенствуется самообучением И ТОЛЬКО самообучением. Чему можно научиться, если просто вставлять код более умных людей? Это как в РПГ: чем больше народу принимают участие в уничтожении противника, тем меньше опыта получит каждый из них. Для таких толп, как это сообщество, опыт будет нулевой.



    Так что не тисипите айпи: не хотите учиться и обложившись манускриптами разбираться в алгоритмах - так и скажите. Только тогда я плохо понимаю, что вам от асма надо? Де#фи же проще! Там-то точно все есть и ничего уметь и знать не надо.
     
  2. captain cobalt

    captain cobalt New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2003
    Сообщения:
    222
    Адрес:
    /ru/perm
    n0p

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



    > Я на 90% уверен, что ни один универсальный код не даст

    > такой оптимизации, как заточенный под КОНКРЕТНУЮ задачу.



    aha! ;)
     
  3. n0p

    n0p 10010000b

    Публикаций:
    0
    Регистрация:
    7 май 2003
    Сообщения:
    256
    Адрес:
    Новосиbeerск
    Возможности безграничны.
     
  4. captain cobalt

    captain cobalt New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2003
    Сообщения:
    222
    Адрес:
    /ru/perm
    Эх, не получился каламбур...



    Имелось ввиду то, что процитированное утверждение фактически эквивалентно тому, что в 90% случаев следует использовать ЯВУ...
     
  5. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    n0p наверное немного утрирует. Самую малость.:)



    Главное ведь чтобы была база, от чего плясать. Пусть алгоритм будет не универсальный, пусть не на все случаи жизни, возможно с ошибками. Не страшно это. Кто захочет - разберётся и поправит, дополнит, оптимизирует под свою задачу и т.д. И для этого сначала изучит алгоритм. А кто пришёл за copy-paste - плюнет и откажется :)



    P.S.

    Похоже опасения, что человек может "поиметь готовое решение" от слов "стандартная библиотека". ИМХО, стандартная библиотека вредна для здоровья нации :) Нужны маленькие процедурки, отдельные, чтобы можно было их пощупать, поковырять. А библа - первый шаг в сторону ЯВУ.
     
  6. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    n0p >




    Я вот до сих пор не научился конектится к инету твоим способом - путём ухопочёсывания.

    Поэтому приходится пользоваться помощью модема :-(
     
  7. n0p

    n0p 10010000b

    Публикаций:
    0
    Регистрация:
    7 май 2003
    Сообщения:
    256
    Адрес:
    Новосиbeerск
    cresta

    Ну я не против кучки функций полезных! Я даже за. Но СВОИХ функций. Соглашусь, я пользовался приводимыми на форуме функциями, но только в целях полного разбора и познания алгоритма. 100% всех алгоритмов описаны в разных источниках. Что мешает их взять и написать под себя? Это настолько простая задача, что над ней даже думать не надо (нет, ну конечно шифрование RSA сделать не так просто, тут надо солидно рэпу чесать, но в большинстве случаев все просто).





    Блин! Программеры превращаются из творцов в обезьян. Вот ученые радуются, что смогли научить обезьяну программировать. Еще бы! Повозил мышой по экрану, тыкнул в кнопку - программа готова. Хорошие программеры должны из слонов получиться - они эфектно кисточкой возят. Некоторые называют это картинами. С современными программистами тоже самое: некоторые называют ЭТО программами.





    S_T_A_S_

    Ухопочесыавние - вчерашний день. Ментальная связь решает. Силой мысли можно горы сворачивать.
     
  8. dead_body

    dead_body wasm.ru

    Публикаций:
    0
    Регистрация:
    3 сен 2004
    Сообщения:
    603
    Адрес:
    Украина;г.Харьков;г.Н.Каховка
    Вообщем ясно, нихто ничё писать не собираеться...

    Возможно это к лутшему, но только "возможно".
     
  9. captain cobalt

    captain cobalt New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2003
    Сообщения:
    222
    Адрес:
    /ru/perm
    n0p

    > нет, ну конечно шифрование RSA сделать не так просто,

    > тут надо солидно рэпу чесать



    А что нужно делать, чтобы написать



    -- операционную систему

    -- компилятор языка программирования

    -- реляционную СУБД

    -- ...



    ?
     
  10. n0p

    n0p 10010000b

    Публикаций:
    0
    Регистрация:
    7 май 2003
    Сообщения:
    256
    Адрес:
    Новосиbeerск
    Не поверишь: тоже рэпу почесать. Но немного дольше и энергичнее.
     
  11. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    dead_body >




    Почему никто? captain cobalt IMHO вполне дельное предложение выдвинул.

    Только с инструментами определиться нужно.





    n0p >




    Всё не могу понять один момент.

    Какая разница, берёшь ты готовый код или готовый алгоритм ?

    Чем принципиально отличается использование чужих программ, записаных на каком-либо существующем языке программирования, от тех же чужих программ, но записаных "псевдокодом" или обычными человеческими фразами?

    По твоему "творец" - это человек способный выступить в роли "транслятора" ?!

    Так как же назвать тех, кто придумывает новые адгоритмы?

    Дональд Кнут ? :).



    >




    Т.е. ты (находясь в трезвом уме и здравой памяти) хочешь этим сказать, что твой мозг способен передавать информацию непосредственно в инет ?
     
  12. n0p

    n0p 10010000b

    Публикаций:
    0
    Регистрация:
    7 май 2003
    Сообщения:
    256
    Адрес:
    Новосиbeerск
    Ведь речь идет о реализации ГОТОВЫХ алгоритмов на желаемом языке. Так что для ОСей берется книжка по архитектуре ОС и не одна. Интенсивно читается, осознается. Все. Можно приступать.



    С компиляторами та же история.



    С СУБД тоже.



    ВСЕ алгоритмы уже давно придуманы и детально описаны не на один раз. Задача заключается только в написании этих самых алгоритмов и МОДЕРНИЗАЦИИ их по своему усмотрению.



    Если взять готовый код, как его модернизировать? Сначала надо хотябы понять что там написано, а это, как уже было замечено, значительная работа. В большинстве случаев гораздо проще написать свое.
     
  13. n0p

    n0p 10010000b

    Публикаций:
    0
    Регистрация:
    7 май 2003
    Сообщения:
    256
    Адрес:
    Новосиbeerск
    S_T_A_S_

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



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



    Чтобы придумать свой алгоритм надо ЗНАТЬ и ПОНИМАТЬ те алгоритмы, которые уже придуманы. Хотябы чтобы не придумать придуманное. Если ты возьмешь чужой код, ты что, будешь знать и понимать как он работает? Я - нет.





    Пока-что только посредством рук над клавиатурой, но я работаю. :)
     
  14. captain cobalt

    captain cobalt New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2003
    Сообщения:
    222
    Адрес:
    /ru/perm
    n0p

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



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



    Поэтому чтобы до конца следовать своей идеологии, ты должен самостоятельно получать машинный код своей программы и оформлять его в таком виде, чтобы он запускался при инициализации компьютера. Желательно с помощью BIOS собственного сочинения. ;)
     
  15. captain cobalt

    captain cobalt New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2003
    Сообщения:
    222
    Адрес:
    /ru/perm
    n0p> естественный язык никому не приходит в голову оптимизировать.



    комсомол == коммунистический союз молодёжи

    коминтерн == коммунистический интернационал

    колхоз

    генсек

    ...



    ;)
     
  16. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    n0p

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

    А кто хочет посмотреть и разобраться "как оно работает", сделает это и без таких патетических призывов.

    Первому ты никак не помешаешь, а вот второму помешать можешь :dntknw:
     
  17. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    cresta

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



    И он будет _абсолютно_ прав. Когда мне нужен компонент - я беру его и подключаю, а не страдаю философией "да как же так, я ведь не знаю, как он работает". Да плевать мне, как оно работает - лишь бы работало правильно. Это называется "переиспользование кода", на этом уже ...дцать лет все программирование держится. И только некоторые ассемблерщики ударились в сектантство и предлагают каждому все писать "с нуля", в то время, как в прочих языках каждое последующее поколение стоит на плечах предыдущего. Нетрудно догадаться, что на такое "программирование" никакой жизни не хватит. Вот вам и ответ "почему на ассемблере не пишут больших проектов": потому что тем, кто хочет и может взяться, опереться не на что. Тем более, что рано или поздно до всех доходит, что жизнь - она слишком короткая, чтобы в миллион первый раз лабать подпрограмму "перевод строки в число" и что могильные червяки ради "высшего знания" свой ужин не отложат и отсрочек не дают.
     
  18. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    johnfound

    Хорошие замечания!



    2. ООП и другие современные методы имеют один большой недостаток - процессор к сожеленью не обектно ориентирован, тем более, компонентно и т.д. Поетому, если хотим ООП, надо емулировать обекты, изпользуя процедурные возможности процесора, а ето уже не асемблер, даже если написанно с mov eax, ebx. Придется делать абстрактные слои, которые будут служить только чтобы сделать все "обьектно" и програма будет расти все больше и больше, и путь к Дельфи не за горам...



    Как кто-то хорошо подметил: мета-ассемблер. Описание программы с помощью объектов. А потом по этому мета-коду пробегается генератор реального кода и получаем исходник на ассемблере. Причём, если генератор сделан как PlugIn - получение кода на любом ассемблере (FASM,MASM,TASM,NASM...) вопрос нескольких секунд - открываем конфигурацию IDE, выбираем нужный и ре-транслируем.



    3. Библиотеки имеют один большой недостаток - универсальность. Например, стандартные процедуры надо иметь проверку на правильность параметров. А что если я вызываю ети процедуры всегда с коректными параметрыми? Правильно - весь стот код, уже только замедляет програму и увеличивает ее размер. А если я напишу моя процедура, которая н будет проверять то что всегда правильно, а будет проверять то что может быть неправильно - я получу минимальной размер и максимальная скорость. А ведь ето именно и преимущество ассемблера перед ЯВУ?



    Решение опять-же просто: когда из мета-кода генерируется настоящий код - только те функции попадают в исполняемый файл, которые были вызваны. Таким образом получаем минимальный размер кода. Есть ещё решение: специально для параметров - условная трансляция. Заключить проверку параметров в условный блок.



    Как результат получается противоречие - библиотеки нужны И вредные. Как решить ето противоречие? Наверное стоит подумать. Все мы думаем о библиотек, тем же образом, как думает ЯВУ програмист. А можеть быть так нельзя. Может быть современные ассемблерские библиотеки надо быть больше чем просто група функции, чтобы не выбирать ИЛИ-ИЛИ, а И-И.



    Я работаю над этим пару лет уже. Посмотрим на результат, наверное, ещё через год...



    Кстати, как идёт работа над FRESH?

    Вы, если не ошибаюсь - один из авторов?
     
  19. johnfound

    johnfound New Member

    Публикаций:
    0
    Регистрация:
    12 фев 2003
    Сообщения:
    74
    Адрес:
    Bulgaria
    AsmGuru62





    Хм, ето слово "мета-ассемблер", как применяеться здесь как-то очень напоминает мне "компилятор ЯВУ". Даже и если синтаксис у него "ассемблерной". Там по моему будут те же проблемы которые в каждом компиляторе ЯВУ и поетому результат будет "не тот". Чем етот "мета-асемблер" будет принципиально отличаться от HLA Рандала Хайда?



    Насчет 3: Включение только функции которые изпользуються в программе - ето не проблема. Все библиотеки Fresh работают етим образом давным давно.

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







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

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    Hyde преувеличил - и получился ещё один ЯВУ.

    Особенно "переделка" синтаксиса Ассемблера меня удивила - ну зачем надо было идти так далеко?



    Мой подход основан на ООП. На очень простом ООП: простое наследование + виртуальные методы. Все классы в библиотеке - исходный код открыт, можно доработать и переработать.



    Насчёт оптимизации: моё мнение - сначала быстро собрать программу из компонент, чтобы всё работало. А затем оптимизировать. Кстати, мой мета-ассемблер позволит очень неплохие возможности по выравниванию данных и кода - даже в стеке.



    Как доказать что та строковая функция, для которой пишется специальный код, действительно НУЖДАЕТСЯ в оптимизации? У меня это просто: указываем в IDE опцию генерации где время затраченное CPU на каждую функцию будет замерено (Profiling Option). Никаких изменений в самом мета-коде! Но реальный код построен с замерами времени/частоты для функций.