Стиль программирования

Тема в разделе "WASM.WIN32", создана пользователем PROFi, 11 фев 2006.

  1. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    Собираю единомышленников, кто остался верен машинному ассемблеру. Короче см пример. (код незавешен, просто я сейчас переписываю свой отладчик в более универсальный вид)

    [​IMG] 73613836__MyStile.rar
     
  2. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    Большинство оставшихся нормальных людей, не испорченных туториалами iczelion'a и Four-F'a, не обитают в интернете, к великому счастью для них самих...

    TASM... 866... фиксированная табуляция... умеренное применение макросов -- когда-то это было почти стандартом в ассемблерных исходниках, а теперь благодаря интернету ничего этого нет. ;(
     
  3. S_T_A_S_

    S_T_A_S_ New Member

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

    Ты делаешь аналог STS для писюка? :)



    tasm это видимо рулез для тех, кто к нему издавна привык, но, например, fasm позволяет обходиться без

    db 66h,8Bh,0F0h

    (и, как известно, написан давним фанатом tasm'а ;)



    ЗЫ: в единомышленники меня вряд ли можно записать, несмотря на то, что я до сих пор не понял никчёмный смысл invoke ;(
     
  4. doctor_Ice

    doctor_Ice New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2005
    Сообщения:
    845
    Адрес:
    Russia
    PROFi



    команды с операндами слеплены имхо это и некрасиво и неудобно глянь как у меня.





    [​IMG] _1620402050__just a piece
     
  5. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    Стиль автора темы довольно нагляден.

    Меня вот что не устраивает в современных IDE на кусок кода и на код в целом нельзя ставить контрольные суммы к примеру выделил часть кода сказал crc32 и он оформился как надо с контр.суммой.



    Отсюда, когда в дальнейшем будешь обращаешься будешь наверняка то, что ты писал в прошлом не бита измения!

    А если у тебя щас crc32 не совпадает, то каким то мис-

    тическим способом код может быть не верный
     
  6. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    > смысл invoke



    а мне вот влом каждый раз писать:

    push par1

    push par2

    call Function



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

    S_T_A_S_ New Member

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



    При умеренном использовании макросов, твой код можно записать так:
    Код (Text):
    1. Function par1, par2


    :derisive:
     
  8. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

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

    Изобретать велосипед, когда он уже есть. Зачем?
     
  9. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Так вот и я о том же - invoke совершенно ненужный велосипед :)
     
  10. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    EvilsInterrupt спешу возразить, а если ты в стек заносишь сразу аргументы и адреса подпрограмм (ну естественно не push а типо rep movsd), тогда одним вызовом ret ты одновременно вызываеш ряд подпрграм из dll :)
     
  11. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    Что касается TASM то здесь меня неустраивает только TLINK32, причины как минимум две:

    1. Контрольная сумма = 0, следовательно драйвер написать приблематично

    2. Если в коде отсудствует сегмент данных, да еще нет импорта, то он такое вытворяет.



    Да по tasm, инструция mov ax,cs в 32 битном сегменте превращается в mov eax,cs

    Если использовать tasmx, то возможно использовать такие метки как:

    _Дескриптор_кода:

    jmp _Переход

    _Переход:
     
  12. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Поэтому fasm и рулит! Ему линкер совсем не нужен (хотя можно использовать ms link). Можно создавать не только PE, но и вообще любые форматы файлов (хоть картинки)
     
  13. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

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

    учись у PROFi все популярно возразил! :)))



    И вообще сдеалал бы полезное дело, дописал бы дополнения к туториалом исцелиона сорцов на Fasm`e, было бы здорово!
     
  14. Android

    Android New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2003
    Сообщения:
    183
    Адрес:
    Ukraine
    Я юзаю RadAsm, использую invoke, потому что тут же тебе перечень параметров апи, очень удобно
     
  15. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    Кто может посоветовать, как использовать tasm с каким либо другим линкером (не tlink32), а то последний меня уже сильно достал. И если есть возможность то приведите строку например:

    tlink32.exe -Tpe -aa -c -x Stelth.obj, Stelth.exe
     
  16. NullSessi0n

    NullSessi0n New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2006
    Сообщения:
    322
  17. Nothing

    Nothing New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2003
    Сообщения:
    139
    Адрес:
    Russia
    PROFi

    Кто может посоветовать, как использовать tasm с каким либо другим линкером

    ulink? от некоторых багов tlink32 свободен...



    Контрольная сумма = 0, следовательно драйвер написать приблематично

    Контрольную сумму кто только не считает, и проги внешние есть, и даже hiew32 какой-нибудь ее правит автоматом, правда почему-то не дает вставить неверную :)
     
  18. PROFi

    PROFi New Member

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

    Да я все время удивляюсь, у меня примерно такая же заготовка Win32 приложения. А Fasm попробую, во сяком случае стиль твоей программы написанной на fasm мне подходит, спасибо.



    Nothing



    Что касается контрольной суммы, то существует 2 вида программ ее считающие:

    1. Использующие функцию WinAPI (не помню наизусть какую)

    2. Непосредственно считающие ее. Последние мне наиболее симпатичные - алгоритм работает и в драйвере, а на только на уровне user.

    Поскольку таких (первого) програм много, то и проблем не возникает. Но ведь компилятор по умолчанию это должен делать. К сожалению Tlink32 - ... А вот tasm32 или tasmx мне нраиться, потому я и задаю вопрос можно использовать tasm в сочетании с другим линкером.