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

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

  1. masquer

    masquer wasm.ru

    Публикаций:
    0
    Регистрация:
    13 сен 2002
    Сообщения:
    890
    Адрес:
    Николаев


    Ты совсем не понял причины недоверия к чужому коду. Учти что чужой код будет иметь размеры не 20-30 строк, которые можно простро просмотреть и найти ошибку. Чем листать чужой код и читать комментарии (которые могут быть очевидны для автора того кода, но не для меня) то быстрее свой напишется
     
  2. dmit10

    dmit10 New Member

    Публикаций:
    0
    Регистрация:
    25 окт 2004
    Сообщения:
    37
    Адрес:
    Russia
    n0p



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



    По поводу сложности документации. Что проще: вызвать функцию АПИ с тридцатью параметрами и каким-нибудь десятком структур или простенький





    push MODE_OPEN

    push offset filename

    call OpenFile



    который, я уверен используется процентов в 60 случаев?
     
  3. dmit10

    dmit10 New Member

    Публикаций:
    0
    Регистрация:
    25 окт 2004
    Сообщения:
    37
    Адрес:
    Russia
    masquer

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



    А вообще: хочешь - доверяй, не хочешь - проверяй. Есть вход, есть выход, есть тело... Может, я чего-то не понимаю, может ты прав. У Зубкова видел комментарий? Такой устраивает?



    P.S.А вообще я не люблю типы и ООП. Не думайте, что я псих
     
  4. dmit10

    dmit10 New Member

    Публикаций:
    0
    Регистрация:
    25 окт 2004
    Сообщения:
    37
    Адрес:
    Russia
    n0p





    Мартышкин труд - поиск такой библиотеки изобретение велосипеда заново.



    Насколько я понял, ты считаешь, что я сую пальцы в розетку. Так пусть ударит. Я так хочу. И не надо меня (и прочих) уговаривать. Можешь больше не писать: все и так поняли твою точку зрения.
     
  5. masquer

    masquer wasm.ru

    Публикаций:
    0
    Регистрация:
    13 сен 2002
    Сообщения:
    890
    Адрес:
    Николаев
    dmit10

    Уговаривать никто никого не собирается - я просто высказываю свои мысли :)

    Ты, например, сможешь гарантировать, что твой код не будет содержать ошибок? Не думаю. Просто идея библиотеки для _ассеблера_ несколько утопична по самой сути.





    Ни то, ни то, доверяю я либо самому себе, либо тому, в ком я 100% уверен, а на проверяния времени и желания нету :)
     
  6. masquer

    masquer wasm.ru

    Публикаций:
    0
    Регистрация:
    13 сен 2002
    Сообщения:
    890
    Адрес:
    Николаев


    На асме это уже будет не изобретение велосипеда. Имхо, на асме вообще хорошо что-то нестандартное делать - руки то развязаны :)
     
  7. cresta

    cresta Active Member

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




    ...Я слышал, что время стирает всё...



    (с) Б.Г.



    Гуру конечно помнят те времена, когда они были негурами, да вот видимо эмоции тех времён смазываются и притупляются :)



    Такая библиотека для начинающего - кладезь. И неважно, правильно в ней всё или нет, неважно, надо её корректировать или нет, главное, чтобы было, что корректировать.

    А пожелания хорошенько поискать, дескать всё уже есть... Хм, n0p, это для тебя очевидно, что искать и где, а для того же начинающего поиск превращается в "пойди туда, незнаю куда, принеси то, не знаю что"



    Ценность библиотеки не в том, что в ней все правильно, но в том, что все собрано в одном месте. Что из этого использовать, что нет - пусть решит ищущий.
     
  8. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    не ожидал такой бури - пришел на работу - почта завалена (нада отписаться ;)

    изложу следущие тезисы:

    1.найти готовое можно практически все, так как все программы (кроме единичных, которые как раз пишутся участниками форума) уже написаны ;) вопрос в точках над "е": можно найти все, но могут не все и не всегда, особенно когда срочно - обычно находишь много всего интересного, но не того, что ищешь (в этом вчера под эту дудочку я убедился в очередной раз). вывод: удобно, когда все необходимое расположено в одном месте. пример: мне для начала хватило исключительно материалов с васма.

    2.все наличествующее в основном на си или на паскале, что в ситуации с асмом почти эквивалентно метаязыку, то есть следующий вопрос "а как это на асме". (мгновенный ответ в форуме: "скомпиль и посмотри дизасмом". при таком подходе действительно логичней пользоваться сями - зачем лишний геморрой?). иначе говоря, борланд и мс не зря комплектуют свои пакеты разжеванными готовыми процедурами - чем асм хуже? вообще, их отсутствие больше от "безхозности" асма, чем от ненадобности: просто кружки асма и шитья обычно не имеют отделов стратегической политики дальнейшего развития (по известным причинам ;)

    3.подозрение к чужому коду - если процедура (в общем случае) может быть распечатана на 1-2 листах А4, то подозрения излишни, даже если коменты скупы, во-первых. во-вторых, копировать-вставить необязательно - иногда достаточно посмотреть только как это можно сделать, и сделать по своему. а в-третьих, наверняка размещенная процедура у кого-то работала, то есть есть большая вероятность ее работоспособности, может даже большая, чем у вашего кода, которому вы доверяете. и наконец, если она будет всеобщно пользоваться, то сообщения о багах и ее исправления позволят заточить ее и повысят надежность вашего кода, в то время как при наличии бага в вашем коде конечный пользователь просто сотрет вашу прогу и ничего вам не сообщит.

    4.всех интересует конечный результат, особенно начинающих (его отсутствие может отбить охоту вообще). даже "наляпав" этих процедур можно будет получить работоспособную прогу, которую, при необходимости, бесконечно потом улучшать. ламерство? ну так чем мы хуже дельфийцев? и нет здесь четкой границы - ламерством можно постепенно назвать и макросы, и HLL синтаксис в асме, использование TRUE вместо 1, и вообще, предложить программировать на тумблерах. но, частый вопрос - кому это нужно? если есть готовое :)

    5.кто будет этим заниматься? да сами страждущие! написал процедуру (или нашел ;) - поделись с друзьями. а так же там можно будет размещать ответы на вопросы "а как...", если они не слишком тривиальны. ответ вроде "эта тема уже подымалась" говорит о том, что быстрый поиск в форуме таких процедур неочевиден.

    6.как это реализовать? ну, здесь мои полномочия заканчиваются, могу только предложить королям сайта сделать еще один форум (ааа, уже боюсь гнева ;), назвать его типа WASM.CODEXHG :lol: - и пусть там народ делится: назвал понятно тему "процедура такая-то" и поместил ее текст в первом сообщении с необходимыми пояснениями. а затем получай пинки от других и правь ее в первом сообщении (чтобы не было в начале фуфло, а нормальное - в конце). а когда все будут уверены, можно и маленький lib приаттачить. вот. конечно, должны быть возможно какие-то дополнительные правила, да и мусор, вероятно, придется выгребать отттуда, чтобы можно было пользоваться нормально.



    вот. резюме, типа ;)



    cresta

    Я слышал, что время стирает всё

    я в этом не раз убеждался ;)
     
  9. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    гы-гы!

    дык ведь есть WASM.A&O! желающие библиотек! можно там и делиться!



    возможно, для него только нужно сделать статическую страницу со ссылками, рассортированными по тематикам, типа, "сортировка", "строки", а то там все вперемешку, как ни сортируй ;)
     
  10. n0xx

    n0xx New Member

    Публикаций:
    0
    Регистрация:
    24 ноя 2004
    Сообщения:
    2
    shoo

    Имхо, подобная страница была бы не лишней :).



    Сам я начинающий и проблема поиска необходимых функций на асме (ну или хотя бы сам алгоритм) мне блиска. Но с созданием СТАНДАРТНОЙ библиотеки я не согласен. Можно разве что создать сборник исходников часто (и нечасто) используемых функций (с подробными комментариями и блок-схемами, т.е. с тех. док.). И всем миром их совершенствовать (как например Линукс). Это помогло бы начинающим и опытным (тех. док.).



    Кстати, кто знает про подобные проекты? А то заинтересовался... :)
     
  11. dmit10

    dmit10 New Member

    Публикаций:
    0
    Регистрация:
    25 окт 2004
    Сообщения:
    37
    Адрес:
    Russia
    n0xx

    То, что вы предложили, и есть то, что задумывается. Значит, вы с нами.



    Название СТАНДАРТНАЯ здесь не при чём. Если оно кого-то смущает, его можно заменить на любое другое или убрать вовсе.



    Видимо я был неправ, говоря, что нужно сначала собрать народ, а потом начать делать.. Наверное, лучше наоборот.
     
  12. dmit10

    dmit10 New Member

    Публикаций:
    0
    Регистрация:
    25 окт 2004
    Сообщения:
    37
    Адрес:
    Russia
    masquer





    Да, могу, если знаю, что пишу в каждой строчке. Лучшим способом избавиться от логических ошибок я считаю "неотвлекание внимания на мелочи". Так, например, из того, что правильно работают операции f,g,x непосредственно следует, что правильно работает их сочетание f(x)+g(y). Если я заново пишу функцию f, появляется вероятность возникновения опечаток и логических ошибок, ибо труднее человеческому мозгу обрабатывать большие(ударение на 1 слог) объёмы информации.



    А вообще гарантировать от ошибок не может никто (вот, например, гарантируешь ли ты, что mov eax,ebx скопирует в eax значение ebx?(вдруг произойдет аппаратный сбой?)). А оно и не нужно. Даже если функция и ошибается раз в сто лет, то совсем необязательно, что все это заметят или откажутся от нее. Пример - Windows(здесь даже чаще, чем раз в день (у меня)) с той разницей, что при возникновении ошибки сообщается сюда(+параметры, при которых она не работает), где много людей её трассируют и исправляют баг. Другой пример - процессор. А ну попробуй поделить с остатком положительное число на отрицательное. И что будет? А что должно быть? (У меня ответы различаются на 1)
     
  13. dmit10

    dmit10 New Member

    Публикаций:
    0
    Регистрация:
    25 окт 2004
    Сообщения:
    37
    Адрес:
    Russia
    masquer





    Положим есть задача: написать три программы. И в каждой необходимо преобразовывать дробное число в строку и наоборот. Что ты сделаешь?



    Я думаю, если ты не мозахист, ты напишешь функции и скопируешь их в каждую программу (в противном случае увеличь в условии пусть программ не 3 а 10 и совпадающих функций тоже 10). Итак ты скопируешь. А теперь, положим, что ты добрый и функции очень полезные. Ты поделишься ими с нами.



    ВОТ ТО О ЧЁМ Я ПИШУ



    P.S. А что значит загадочное слово ИМХО?
     
  14. dmit10

    dmit10 New Member

    Публикаций:
    0
    Регистрация:
    25 окт 2004
    Сообщения:
    37
    Адрес:
    Russia
    Вот вы говорите: открыл документацию и пишешь себе на здоровье. Вот попробуйте в качестве упражнения написать (пользуясь, конечно, документацией) программку, которая просто делит 7 на (-5) программно. Только сначала напишите, а потом загляните в аттач (неработающая из-за неверной документации программа).



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

    [​IMG] 1619825998__bug.bat
     
  15. n0xx

    n0xx New Member

    Публикаций:
    0
    Регистрация:
    24 ноя 2004
    Сообщения:
    2
    dmit10

    "То, что вы предложили, и есть то, что задумывается. Значит, вы с нами. "

    Ну раз это так, то я действительно с вами :). Но помощь могу разве что только морально :) (некоторые идеи могу подбросить).
     
  16. johnfound

    johnfound New Member

    Публикаций:
    0
    Регистрация:
    12 фев 2003
    Сообщения:
    74
    Адрес:
    Bulgaria
    Пусть, попробую и мои 4 бита написать по теме.



    1. Если говорим о написание больших проектов на асемблере - библиотека крайне необходима. Ведь, действительно есть операции, которые приходиться писать снова и снова.



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



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



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

    masquer wasm.ru

    Публикаций:
    0
    Регистрация:
    13 сен 2002
    Сообщения:
    890
    Адрес:
    Николаев


    Да ну? У меня опыта разработки лет 12-13 и я себе не могу позволить такой категоричности для чего-либо сложнее чем "Hello World". И из этой фразы следует, что ты не всегда знаешь, что ты пишешь в каждой строчке? :)





    Это мне напомнило старый анекдот, когда один ассемблерщик смотрит на прогу другого и говорить "а какого ты поставил два jmp подряд в одно и то же место?", "а вдруг первый не сработает..."





    Ты на очень примитивном уровне рассуждаешь - все зависит от тех программ - может быть разное кол-во аргументов, разные точности, разная оптимизация (ну например, в первой программе это нужно 1 раз, а в третьей - 1 млрд раз)





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





    "Неча на зеркало пенять коли рожа крива" (с)

    Обнуление edx перед делением спасет отца русской демократии. Ты еще просто не видел документации, которой нельзя доверять.



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

    dmit10 New Member

    Публикаций:
    0
    Регистрация:
    25 окт 2004
    Сообщения:
    37
    Адрес:
    Russia
    masquer

    Твоя альтернатива - ?
     
  19. masquer

    masquer wasm.ru

    Публикаций:
    0
    Регистрация:
    13 сен 2002
    Сообщения:
    890
    Адрес:
    Николаев


    Попробуй что-нибудь более-менее сложное написать, ну незнаю, RSA, AES, сжатие какое-нибудь. После этого сам поймешь и выберешь себе подходящую альтернативу. Для начинанающего - самое оно взять уже готовый алгоритм и переписать его на асм постаравшись при этом улучшить. Асм очень индивидуальный язык - иногда это хорошо, иногда плохо. Просто учти это.
     
  20. captain cobalt

    captain cobalt New Member

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

    > ООП и другие современные методы имеют один большой недостаток -

    > процессор к сожеленью не обектно ориентирован, тем более, компонентно



    Можно также сказать, что процессор "не ориентирован на исполнение операционных систем". Почти все существующие операционные системы (за исключением экзотических) - это набор абстракций, которые каждая программа вынуждена использовать, не может их "обойти", или определить свои собственные абстракции того же уровня. Однако, почти никто не ругается по этому поводу (за исключением тех, кто "хочет делать ось"). И воспринимает такое положение вещей как данность.



    Компонентная архитектура - это всего лишь некоторый набор средств, предназначенный для того, чтобы один компонент мог находить по идентификатору другой компонент, а потом обмениваться с этим найденным компонентом данными через его интерфейс. Вот и всё. Это может быть почти так же просто, как open, close, read, write для файла. Особых причин для "распухания кода" не вижу. Если код для реализации компонентной архитектуры не будет вставляться в каждый компонент, то наоборот можно получить существенное сокращение размеров. Ведь компонентное программирование - это прежде всего "code reuse"...



    > Библиотеки имеют один большой недостаток - универсальность.

    > Например, стандартные процедуры надо иметь проверку на правильность параметров.

    > А что если я вызываю ети процедуры всегда с коректными параметрыми?



    Да, это область в которой компиляторы ЯВУ имеют существенное преимущество перед любым ручным кодированием на ассемблере. Ещё в стародавние времена компиляторы умели говорить "condition is always true", а новомодные оптимизаторы хвастаются тем, что могуть выполнять "межпроцедурный анализ потоков данных". Так что они действительно способны "увидеть" и автоматически удалить "ненужные проверки"...



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



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