Так жив ли еще tasm32+tlink32 или нет ...

Тема в разделе "WASM.ASSEMBLER", создана пользователем PROFi, 24 июн 2007.

  1. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    TASM не просто был чем-то лучше MASM'а -- его можно назвать MASM++. Он был совместим с синтаксисом масма и поддерживал все его фичи, и в то же время обладал своими дополнительными улучшениями. Его разработчики даже озаботились такой вещью, как совместимость с конкретными версиями masm'а, путем задания ограничения по версии директивой VERSION, что хоть и вещь не нужная, но тем не менее отлично показывает подход девелоперов tasm'а к совместимости.
    Т.е. по мере развития, tasm всегда был больше чем masm -- как только выходила новая версия masm'а с новыми фичами, тасм тут же эти фичи поглощал в себя, и в то же время предлагая свои собственные. В "реквиумной" 5й версии тасмовская реализация masm-синтаксиса стала немного отличаться от масма, но imo она является самой удобной из всего что есть, почему и не хочется переходить на любой другой синтаксис.

    И своей популярностью fasm должен быть отчасти обязан tasm'у -- когда стало ясно, что tasm'у уже ничего не светит в плане развития, тут-то как раз и появился fasm, который позиционировался как бы на замену тасму -- типа написан поклонником тасма, синтаксис "похож" на тасм и тп. А в итоге практически никакого сходства, совместимость же наверное вообще самая худшая из всех x86-ассемблеров.

    Т.о., как лично мне кажется, если бы тасм не перестал развиваться в 1996, то fasm сейчас был чем-то вроде nasm -- свои преимущества, свои недостатки, свой круг поклонников -- но по популярности никаких шансов догнать TASM/MASM. Ассемблерщики -- народ консервативный, как еще afair на assembler.ru писалось в ответах к тесту. ;)
     
  2. PROFi

    PROFi New Member

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


    что tasm'у уже ничего не светит в плане развития

    Хм.. Если ты проффесионал, то разработай свой, а если ты еще и хакер - то измени и дополни уже имеющийся. Только вот притензий больше к линкеру.
     
  3. Arthur

    Arthur New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2007
    Сообщения:
    494
    _BC_ а я думал что Привалов писал fasm не потому что tasm'у тихий кирдык приходил, а потому что нужно было для его Оси?

    Ну это только благодоря Intel'у, а ты глянь на AT&T - простой и однозначный. Да и вообще стоит ли говорить о том что синтаксис одного ассемблера должен быть по максимому схож с другим ассемблером?
     
  4. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    я хз чем он там руководствовался, когда делал фасм, это чисто хронологический нюанс -- фасм появился, когда увядала популярность тасма, и отчасти заполнил пустующую нишу. Если бы ТАСМ оставался популярным продуктом с поддержкой, притом как лучшая альтернатива МАСМ'у, то всё возможно было бы по другому.
    я так и делал вообще-то. ;) Первое, что поправил из недостатков -- это заменил MZ-stub на более маленький, затем пофиксил тлинковый избыточный размер заголовков секций, из-за которых первая секция начиналась на 600h. Ленивые борландовцы решили не подстраиваться под число section header'ов, а брать по максимуму, afair, число секций с .obj'а + 16. Из-за этого и получался ближайший доступный offset для секций -- 600h. В планах есть переделка работы с импортом, чтобы можно было как масме выборочно обращаться к импорту, минуя JMP-переходники, плюс возможность обращаться к импорту не-call командами, например, чтобы загрузить адрес импортируемой функции в регистр. Сейчас это не работает, линкер правит адрес на переходник и в итоге в регистр грузится бред. Благо генерацию импорта и jmp-переходников еще давно разбирал.
    В самих тасм.ехе/тасм32.ехе imho особо нечего патчить, разве что отрубить то самое ограничение location counter overflow на размеры сегментов и org'а при формировании raw-бинарника. По-хорошему их надо расхакать на предмет добавления новых команд. Команды там довольно мутновато добавлять, скорее всего придется раздизасмить его до возможности реассемблирования, а потом уже их добавлять, с пересборкой. Еще было бы неплохо сделать опциональное включение локальных имен структур для масм-синтаксиса, благо эта фича присутствует в IDEAL-режиме, т.е. по сути уже реализована в тасме, вопрос только в ее применении для режима МАСМ.
     
  5. PROFi

    PROFi New Member

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

    Я считаю что улучшения можно разделить на 2 категории
    1) Те которые дают возможность писать программы (драйверы) для любого вида итогового файла - будь то драйвер ядра, или приложение DirectX
    2) Те которые не устраивают при программировании - добавление новых комманд, сжатие PE заголовка и т.д.

    По первой категории - все на 99% касается только tlink32
     
  6. Ykidia

    Ykidia Member

    Публикаций:
    0
    Регистрация:
    21 июн 2005
    Сообщения:
    99
    Адрес:
    Санкт-Петербург
    Насчет tlink согласен. Когда однажды он стал мне выдавать exe-шник с нулевой длиной, и это зависело, очевидно, от очередных добавлений к программе, я отказался от него и после некоторых поисков пришел к wlink. Заодно перевел все на linear executable exe + может быть dos4g-совместимый dos-расширитель. Пока меня эта ситуация устраивает.
    Однако я успел заметить, что в tasm'е тоже есть чего исправлять. Ввиду компиляции в 32-битный protected mode с плоской организацией памяти, префиксирование команд (16/32-бит) должно происходить наоборот. Однако это не всегда происходит. В частности, это относится к команде loop. Я не сразу понял, что происходит, ибо использовал по старинке (когда еще пользовался связкой tasm/tlink) 16-бит версию этой команды, однако в 32-битном сегменте кода tasm и не подумал ставить перед ней префикс.
    Это еще не все, есть еще проблемные команды, сейчас не помню, надо смотреть и вспоминать. Так что править еще как есть что (пользуюсь версией: Turbo Assembler Version 5.3 Copyright (c) 1988, 2000 Inprise Corporation).
    На данный момент связка tasm+wlink[+dos32a|dos4g] позволяет делать мне то, что я хочу.
     
  7. bugaga

    bugaga New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2007
    Сообщения:
    361
    TASM32 в связке c IDA ниче так рулит. А вот TLINK32/ILINK32, ацтой, да и впало больно дрова на них мутить. M$-явочный LINK все полутше будет.
     
  8. PROFi

    PROFi New Member

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

    префиксирование команд (16/32-бит) должно происходить наоборот. Однако это не всегда происходит
    Да еще типа push cs как ты думаешь сколько байт она в стек засунет?

    А что такое wlink? Где его берут
     
  9. bugaga

    bugaga New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2007
    Сообщения:
    361
    >Да еще типа push cs как ты думаешь сколько байт она в стек засунет?
    я вот, не думаю - а вижу что оно ОДИН байт засовывает 0E. Или у вас есть другие варианты???

    >А что такое wlink?
    Это Watcom Link. Если не в курсе -Watcom - открыт, там есть еще WASM - ваткомовский ассемблер, и WLINK- линкер, и WCPP ваткомовские плюсы.. Вроде все в открытом коде.
     
  10. PROFi

    PROFi New Member

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

    А если тебе надо засунуть в стек только слово (под USE32), то как необходимо переписать данную инструкцию?
     
  11. Mental_Mirror

    Mental_Mirror New Member

    Публикаций:
    0
    Регистрация:
    7 май 2007
    Сообщения:
    431
    PROFi
    Я лично начал кодить на ТАСМ из-за учебника ассемблера где все писалось на нем. Позже понял, что писать на Тасме под винду жуткий гемор, из-за отсутствующего инструментария (мало либ - кстати что вы можете сказать про implib - глючит или нет?, инк-файлов, которые никто не писал и не пишет для пакета по сравнению с тем же масмом), и соответствующей заточки. Очень часто приходиться вбивать структуры ручками, это не может не обламывать. Хотя синтакис ТАСМа как и других популярных ассемблеров считаю необходимым знать, т.к. кодов на нем хватает. Вообще синтаксис вещь довольно субьективная, и как мне кажется спорить по этому поводу не стоит. Да и неплохим залогом совместимости может быть отказ от использования макросов. Да и неизвестно нужна ли действительно эта пресловутая "совместимость".
    PROFi
    Код (Text):
    1. db 66
    2. push cs
    всегда рулит Ж)
    _BC_
    Браво! Когда раздизасмите плиз сообщите - это будет полезно для всего сообщества.
     
  12. bugaga

    bugaga New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2007
    Сообщения:
    361
    PROFi, писал:
    В USE32 оно как правило (в грамотном коде) - нафик не надо :) Вобщем пациента периодически выкапывают из могилы. А какая прелесть "чисто" досовский 3.0! :)
     
  13. PROFi

    PROFi New Member

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

    Дезассемблить ничего не нужно - достаточно SoftIce и пару бутылок пива. А как это сделать посмотри http://www.wasm.ru/article.php?article=addfunc
     
  14. AndNot

    AndNot New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2007
    Сообщения:
    49
    Загляни сюда, не пожалеешь :)
    http://www.mujweb.cz/www/komsbomb/
    После посещения этого сайта у меня полный набор инклюдов масма, но под режим тасма - Ideal. Очень удобно. Там же найдешь инклюды, для создания объектной модели, очень сильно напоминающей C++, и довольно удобной. В общем там много всего, включая ссылки любителей тасма ;)
    Но нарисовалась другая проблема - тасм в несколько раз медленнее масма производит компиляцию, и памяти жрет больше! Никогда бы не подумал :dntknw:
    PS: ИМХО. Пока еще тасм самый удобный и многофункциональный ассемблер.
     
  15. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    чего-то этот адрес у меня не открывается уже давненько
     
  16. AndNot

    AndNot New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2007
    Сообщения:
    49
  17. Mental_Mirror

    Mental_Mirror New Member

    Публикаций:
    0
    Регистрация:
    7 май 2007
    Сообщения:
    431
    AndNot
    Спасибо за линк. То что нужно.