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

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

  1. cresta

    cresta Active Member

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



    Ну может вспомнить, что тебя, как начинающего, поставило в тупик? И отсюда начинать? Я вот помню, умножив 2 на 2, никак не мог отобразить эту проклятую 4 в messagebox'e. Есть BaseAscii, достаточно гибкая процедура. Ещё lstrcmpi никак не хотела корректно работать с кириллицей, пришлось нарисовать свою процедуру. Вроде корректно всё работает, не жалуюсь пока. Вот тебе примерно одна из тем - строки. Пару процедур типа BaseAscii и AsciiBase, сравнение, конкатенацию, ucase\lcase. И т.д.
     
  2. masquer

    masquer wasm.ru

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


    имхо (:-Р), как раз в споре она и рождается :) ухожу, ухожу... :)
     
  3. B_108

    B_108 New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    62
    ну вы еще подеритесь...

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

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



    >Для какого транслятора (MASM, FASM, ...) планируется >делать библиотеку ?



    оформление отдельных процедур в MASM\TASM\FASM практически одинаков и в процедурах заведомо не будет всяких 'model .tiny', 'format PE GUI 4.0' или 'section .text code readable executable'
     
  4. The Svin

    The Svin New Member

    Публикаций:
    0
    Регистрация:
    6 июл 2003
    Сообщения:
    665
    Адрес:
    Russia
    Автору предложения нужно просто первую рабочую методу сказать -

    типа принимается пока для MASM,

    сорцы валить туда - то.

    предложения и замечания - в рабочем порядке в этом топике.



    Начнутся публикации, вопросы\варианты\согласования будут решаться гораздо легче.



    Чё у нас как ни дело - так решение всемирных общефилосовских проблем.



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



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



    Метода может в чём и не оптимальная, но она понятная.

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

    и объяснить что куда слать в рабочем порядке. Чем проще - тем лучше.
     
  5. dmit10

    dmit10 New Member

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



    Насчёт мыла я имею то же мнение. А вот чьё мыло? Предлагаю зарегистрировать общий ящик (только надо скрыть пароль от недоброжелателей, просто удаляющих все письма и отделить таковых от нас).



    The Svin



    типа принимается пока для MASM



    по поводу топика: есть чисто психологический момент: не знаю, как вы но, мне, увидевшему 20-страничный топик (впервые), просто лень читать его полностью... Так, просмотреть страницы 2. Есть предложение создать новый, пустой, а этот оставить на усмотрение адмниов (или masquer'у) или как-то по-другому уменьшить его размер, дабы не отпугивать тех, кто не знает ещё о проекте.



    Куда валить? Идей пока (кроме мыла) нет.



    Хатч-? (Это что за неологизм? Вы, конечно, извиняйте, что я всё подряд спрашиваю, но кроме русского и ломаного английского языков иных не изучал)



    cresta

    Что меня поставило в тупик? Да перевод строка-число. И до сих пор ставит, ибо всё забываю сохранять наработки.



    Вроде, ответил всем. А вообще, я вижу, никто кроме меня идей не высказывает, а все только спрашивают. Причём меня. Досадно. Я думал, всё как по маслу пойдёт...
     
  6. S_T_A_S_

    S_T_A_S_ New Member

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




    Ну дык что получилось? Есть 2 категории - кому нужна библа, и кому нет. Отсюда вывод: если она появится, то хуже от этого никому не будет :).





    B_108 >




    Различается в принципе.

    Вот это:



    mov eax,foo



    MASM и FASM воспринимают как 2 различные команды.

    В общем-то если стараться придерживаться единого стиля, то можно будет MASM исходник скармливать FASM'у





    dmit10 >




    Ну это понятно, что .lib файлы отстой, но я не про это. Вот предположим каждый наставит копирайтов в исходниках, что потом с этим делать ?



    >




    Можно для начала прям сюда и аттачить. Если дело пойдёт, потом можно будет линки на файлы собрать где нибудь в одном месте (другом топе, например).



    >




    Ну дык, это только спорить легко - думать то при этом не особо нужно :).



    Для начала неплохо бы хоть примерные пожелания к сорцам составить (не требования, а рекомендации)

    Например:

    - использование HLL конструкций MASM'а свести к минимуму - это упростит портирование под другие ассемблеры.

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

    - предпочительный способ передачи параметров - stdcall. однако в строковых ф-циях IMHO удобнее использовать ESI / EDI как указатели на источник / приёмник.

    - можно ещё ошибку возвращать, установив Carry Flag, например.

    Как процедурки называть - тоже важно, я например могу пол дня думать, а потом назову абы как =).



    >




    Да ты пойми, что за тебя никто делать ничего не будет. Начинай потихоньку, глядишь, народ тоже будет подключаться. Вот лично мне, например, библа это не нужна сейчас, но в меру сил могу помогать чем-нибудь. Вот у меня где-то есть
    , правда тормозная и громоздкая, т.к. универсальная (переводит числа Асм и Си формата: 01b, 0x77, 0ah, и т.п. в формат 64 бита), могу кинуть сюда. Хотя написана на "нестандартном диалекте", так что нужно её напильником обрабатывать, а у меня на MASM аллергия :-(
     
  7. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    S_T_A_S_

    > Как процедурки называть - тоже важно, я например могу пол дня думать, а потом назову абы как =)



    У мя та же проблема, я могу несколько дней названия придумывать меткам, переменным, флагам, процедурам %)

    накодить не проблема, проблема правильно всё обозвать :derisive:
     
  8. B_108

    B_108 New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    62


    ок, ок :)

    конвертация во всяком случае легка:

    убрать\добавить offset и заключить переменную в квадратные скобки совсем не трудно.
     
  9. shoo

    shoo New Member

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

    немного повторюсь.



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



    1.хозяевам сайта создать отдельный специальный форум.

    2.каждую процедуру начинать новым топиком в этом форуме, с понятным названием, соответствующим названию процедуры.

    3.текст процедуры помещается в первом сообщении, в остальных - обсуждается.

    4.при наличии существенный замечаний текст правится в первом топике.

    5.при наличии равноправного варианта он также должен быть размещен в первом топике.

    6.форум жестоко модерируется - все фуфло выбрасывается, включая неудачные топики, иначе он засрет..я ;)

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



    да и нужно сделать это быстро, пока пылают сердца. ну а дальше - жизнь покажет ;)



    добавлю - можно, конечно, начать в WASM.A&O, но произвольный формат его топиков усложняет поиск решений (особенно при количестве страниц более одной), но с другой стороны, при наличии 5-10 удачных топиков можно будет и форум из них создать. и, конечно, к нему должен быть статический указатель, где процедуры будут рассортированы по смыслу, а не по датам. вот.
     
  10. S_T_A_S_

    S_T_A_S_ New Member

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




    Трудно не пропустить место, где нужно внести изменения.
     
  11. S_T_A_S_

    S_T_A_S_ New Member

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




    Отдельный подфорум создавать - это нужны серьёзные мотивы. Предположим, Aquila на это пойдёт, а потом там будет пусто. И что ?



    >




    Если я не ошибаюсь, это можно будет делать в течении первого месяца, а потом уже нужны права модератора. К тому же, нужно быть смелым, что бы использовать код, не прочитав весь топ о нём :derisive:



    >




    Вот когда там будет хоть 2 десятка постов по теме, то можно будет думать, что дальше делать. Перенести топы между разделами вроде бы не сложно (по крайней мере в HELHEIM они быстро перемещаются :derisive:
     
  12. dmit10

    dmit10 New Member

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

    Я бы выдвинул к ней такие требования:

    1. Оптимальность по скорости. Т.е. ясно, что копировать двойными словами.

    2. Кроме того я что-то слышал о таком, как выравнивание. Я предполагаю, что его наличие/отсутствие ввиду большого числа итераций также влияет на скорость работы+возможность отключить такую проверку.

    3. Возможность вызова функции, даже если source и dest буферы перекрываются+возможность отключить эту проверку.

    4. Подумать о передаче параметров (это уже по возможности), т.е. возможность отключить копирование из параметров в регистры и передавать данные в регистрах.

    5. Хороший комментарий ("дабы не было недоверия к чужому коду").

    6. О внешней красоте я и не говорю.



    Кстати, как отключить тот или иной блок. У меня идей (кроме COMMENT) по этому поводу нет.
     
  13. shoo

    shoo New Member

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

    конечно, этот вопрос более сложный, чем простой.

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

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

    3.конечно, желаем мы все, вопрос только в том, кто будет это делать, и насколько удачно, поэтому можно начать с пробных тем в WASM.A&O. но дело даже не в этом, а в том, что они там уже есть, просто алгоритм выборки тем связан с последней датой/временем - это удобно для диалога, но неприемлемо для поиска (нормального). так и новые темы уйдут во мрак "следующих" страниц. поэтому, возможно, нужно будет только страницу создать с разбивкой по смыслу, например, нужно число в строку преобразовать - смотришь список процедур в подразделе "преобразование строка-число", и т.д.
     
  14. B_108

    B_108 New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    62
    dmit10

    в формление также стоит включить минимальный процессор,

    для которого код будет работать.

    Также стоит сказать по какому критерию производилась оптимизация: размер, скорость или их оптимальное соотношение.

    Ну плюс само собой где будут лежать входные и выходные параметры.



    В этом субфоруме\форуме\библиотеке можно собирать не только процедуры но и простые короткие, но неочевидные, по крайней мере начинающим, куски кода.

    Комбинация из 2-3 строчек на ассемблере уже может быть "волшебной", например проверка на 0 в eax размером в 3 байта



    xchg eax, ecx

    jecxz _somethere



    и т.д.
     
  15. The Svin

    The Svin New Member

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




    Это Стив Хатчессон, которого никают Хатч. Автор пакета MASM32.
     
  16. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Что-то примеров
    не видно :)

    Нашел на винте, автор не я :derisive:

    [​IMG] _2087796384__memcpy_amd.asm
     
  17. S_T_A_S_

    S_T_A_S_ New Member

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

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Процедура подсчёта crc32 файла.



    Переделана с ЯВУ, комментариев минимум, по причине отсутствия таковых в оригинале :)

    [​IMG] _225722309__crc32_of_file.asm
     
  19. cresta

    cresta Active Member

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



    Была написана из лени (неохота было разбираться, почему lstrcmpi некорректно работает с кириллицей). Данная процедура корректно сравнивает кириллические и латинские символы.



    Желающие оптимизировать - вам карты в руки. :)

    [​IMG] 1837955713__cmpstr_i_cyr.asm
     
  20. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    >Процедура подсчёта crc32 файла.



    >Переделана с ЯВУ, комментариев минимум, по причине отсутствия таковых в оригинале :)



    А вот процедура генерации таблицы констант для этого алгоритма:



    MakeCRC32Table MACRO

    xor eax,eax



    _loop_i:

    mov edx,eax

    mov cl,8



    _loop_j:

    shr edx,1

    jnc @@1

    xor edx,0EDB88320h

    @@1:

    dec cl

    jnz _loop_j



    mov [CRC32_Table+eax*4],edx

    inc al

    jnc _loop_i



    ENDM