На каких ассемблерах вы пишете чаще всего?

Тема в разделе "WASM.ASSEMBLER", создана пользователем Jin X, 17 янв 2018.

?

На каких ассемблерах вы пишете ЧАЩЕ ВСЕГО? (читайте примечание в теме)

  1. Macro Assembler (MASM)

  2. Turbo Assembler (TASM)

  3. Flat Assembler (fasm)

  4. Netwide Assembler (NASM), YASM (включая NASM в SASM IDE с его макросами)

  5. GNU Assembler (GAS)

  6. WASM и его потомки: UASM/HJWASM, JWASM

  7. GoAsm (отдельно GoLink не считается)

  8. Pelle Orinius Assembler (PoAsm)

  9. Ассемблер, встроенный в языки высокого уровнях (C++, Delphi, etc... напишите!)

  10. Ассемблер в emu8086 (TASM-подобный, не fasm !!!)

  11. Flat Assembler G (fasmg) [укажите в теме – для каких архитектур используете !!!]

  12. Atmel AVR Assembler (или другой AVR-ассемблер, но не fasmg... напишите!)

  13. FASMARM и другие ARM-ассемблеры (напишите в теме – какой именно!)

  14. Другие ассемблеры для архитектур, совместимых с IA-32/Intel 64 (напишите!)

  15. Другие ассемблеры для архитектур, НЕ совместимых с IA-32/Intel 64 (для микроконтр, 8-бит, напишите!)

  16. Я не пишу на ассемблере :(

  17. High-level Assembler/Assembly (HLA, HLASM)

Можно выбрать сразу несколько вариантов.
Результаты будут видны только после голосования.
  1. Intro

    Intro Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    91
    Решил назвать по проще: HLMASM - High Level Macro ASseMbler. Кое что уже сделал, и да же работает, выражения пока не делал.
    Вопрос? В МАСМ64 нет конструкций .if и др., будут ли они добавлены в следующие версии? Я так понимаю, что скорей всего, их никогда не добавят, фашистам из мелкософта сам ассемблер как кость в горле, ладно обойдёмся без них.
     
  2. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    312
    Адрес:
    Кольца Сатурна
    .if и пр. есть в temphls.inc
     
  3. Intro

    Intro Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    91
    Есть ли исходники какого нибудь ассемблера вроде МАСМ?
    Часть кода.
    Код (ASM):
    1.  
    2. invoke file_read_line, FSource, addr str_line, sizeof str_line
    3. .break .if (eax==0)
    4. mov size_line, eax
    5. invoke parser_line_asm, addr str_line, size_line, addr label_line, addr command_line, addr operand_line
    6. ;анализ типа метки
    7. .if (label_line[0])
    8. invoke label_analysis, addr label_line, addr command_line, addr operand_line
    9. .endif
    10.  
    Надо для функции label_analysis, без анализа типов меток не получается.
     
  4. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    312
    Адрес:
    Кольца Сатурна
  5. Intro

    Intro Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    91
    UASM по ходу самое то, можно в .if использовать float, переменные xmm регистры.
    Но вот проблема, при попытке собрать проект XRayExtensions, выскакивает "Out of Memory" - нехватка памяти, это не доработка компилятора. Хоть исходники под 2014 студию, но я смог собрать UASM32 под VS2010, и исследовал этот вопрос, функция обработки сегментов выделяет по 330 МБ за каждый проход, и на 6-м валится, т.к. памяти больше 2 ГБ. Короче, не все проекты собираются UASM без проблем.
     
    Mikl___ нравится это.
  6. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    312
    Адрес:
    Кольца Сатурна
    Intro, напишите в саппорт. Я как-то писал им (порядка года назад) о том, что UASM не поддерживает jcxz (хотя поддерживает jecxz). Ответили быстро, поправили в новой версии.
    Там 2 e-mail'а соавторов, лучше обоим написать :)
     
  7. Intro

    Intro Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    91
    Занятно, но там был баг.
    org 10XXXXXXh
    где далее должно быть: - shift
    Короче: баг исправил.
    Что интересно: время компиляции 0.6 сек, в место 17 сек - МАСМ, это много-го стоит.
    Что ещё интересно... Думаю проект HLMASM надо дальше развивать, UASM приколен, но всё таки не то, то что надо.
     
  8. Intro

    Intro Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    91
  9. Intro

    Intro Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    91
    Работаю с UASM, попытался заюзать виртуальные методы.
    Код (ASM):
    1. ASSUME   edi:ptr CTexture
    2. [edi].pSurface->GetSurfaceLevel(0, &ppSurfaceLevel)
    Начались проблемы, как я понял это работает только под х64, и методы надо объявлять определённым образом.
    Так как исходники в наличии, и проект компилируется, то решил по пилить проект сам. В общем, получилось, частично, теперь COM объекты вызываются без проблем, свои виртуальные методы пока не работают. Просто внутренние макросы _DEREF, _DEREFI рассчитаны на х64. Ладно, это я сам доделаю.
    Что ещё хотелось бы сделать: макрокоманда .goto label [.if] для оптимального условного перехода(выхода из циклов и др.); .ex, .exsse выражения - для целочисленной и флоат-арифметике с помощью SSE инструкций, так же доработать .for (выражения:условие:выражения) где выражения могут быть сложными. С выражениями тут конечно не всё просто, хочется сделать что бы можно было задать почти любой сложности код.
    .ex ESI=(param1*param2+666h)/param3, fParam5=param3*fParam4/fParam6
    Короче, что бы как в С можно было задавать выражения, где надо используется сверхлокальные переменные.
    Надо потом тему создать, на тему UASM, а то для общения с разработчиками UASM на http://masm32.com, с английским у меня плохо.
     
  10. Intro

    Intro Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    91
    Наконец-то нашёл что искал.
    http://alfalavista.ru/idxfldr/2013-06-18-22-25-47/191-2014-02-08-17-15-38.html
    Алгоритм разбора выражений, проверил, работает. Так что в UASM сделаю макрокоманды .ex и .exsse. Можно будет использовать регистры, вставлять функции и макрофункции и т.д.
    Теперь спать! :0
     
  11. Intro

    Intro Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    91
    HLA штука интересная.
    http://www.plantation-productions.com/Webster/
    НО почему то не популярный! А почему? Да просто у авторов получился не ассемблер, а нечто вроде С--(Си минус минус), с синтаксисом паскаля и немножко С/С++ плюс своё. Можно считать, глобально проект провалился. Программистам проще использовать С/С++/С--, студентам кодить на паскале, а ассемблерщики юзают привычные МАСМ, ФАСМ и похожие.
    Но всё таки высокоуровневый код в ассемблере я считаю благом, так как проще писать, и меньше делаешь ошибок, код легче портируется на С/С++, причём обратно.
    ЗЫ
    На текущий момент научил UASM правильно использовать оператор :=, не спотыкаясь о аналогичный в макросе.
    mymacro MACRO param:=<eax>
    Так что макрос .ex отменяется.