Создано: 26 ноября 2016 23:55 · Поправил: Модератор New! Цитата · Личное сообщение · #1
UASM is a free MASM-compatible assembler based on JWasm with these features (old HJWasm): --> terraspace.co.uk <--
native support for output formats Intel OMF, MS Coff (32/64-bit), Elf (32/64-bit), Binary, Windows PE (32/64-bit) and DOS MZ. precompiled UASM binaries are available for Windows, Linux and OSX. Instructions up to AVX2 and AVX512F are supported including all new extensions for VMX, MPX, AES, BND, F16C etc. Support for MS Vectorcall on x64. Support for Borland Register Calling Convention. Full support for SystemV Calling Convention. Integrated Macro Library with OO support. Numerous new HLL features (as described in the extended manual). UASM is written in C. The source is portable and has successfully been tested with Open Watcom, MS VC, GCC and more. As far as programming for MS Windows is concerned, UASM can be used with both WinInc (32/64-bit) and Masm32 (32-bit). C header files can be converted to include files for UASM with h2incX. UASM's source code is released under the Sybase Open Watcom Public License, which allows free commercial and non-commercial use. There's a bunch of source samples available - they are supplied with the precompiled binary packages. JWasm started as a fork of Open Watcom's Wasm in March 2008. Today, the part of Wasm source lines still contained in JWasm is approximately 15%. UASM is a continued evolution of JWasm.
NOTES: Adapting constants switchs to your system,use this tool: sdkrc81\Before_use_me.exe.He will give you the correct swiths for your system. Modify translate.inc with this switchs.The defaut system is windows 10.0
With a correct alignment,all translated structures,can be used as they are. There is no need of any modifie.
Easy Code IDE 32/64-bit
Easy Code - Visual assembler (Updated on July 02, 2019)
(Windows 95/98/ME/NT40/2000/XP/2003/2008/Vista/7/8/8.1/10) - Version 2.x Fasm, GoAsm, JWasm, UASM (HJWasm), Masm and PoAsm, using different tools for the various assemblers --> Easy Code 2.02.0.0010 <--
RadASM 32/64-bit
Current version: 2.2.2.3 - Last updated: 08/01/2018
Overview RadASM is a lightweight IDE tool for all kinds of programmers who are looking for a straightforward application in which to edit their code. It supports a wide variety of programming languages and assemblers such has MASM, NASM, FASM, TASM, Borland C, C++, Bcet Basic, VC6 C/C++, Free Pascal and FreeBASIC. It was created by Ketil Olsen aka KetilO. This is a fork from the original RadASM v2.x source located on SourceForge here I have made some very minor adjustments, which are detailed in the WhatsNew.txt
Features
User friendly interface. Project browsing and properties. Inbuilt programmer tools: ‘Ascii Table’, ‘Colref’, ‘Toolbar Creator’ etc. Multiple Undo/Redo. Find & Replace keywords. Block indents, outdents and comments. Bookmarks. Syntax highlighting. Custom controls. Automatic code completion. Record macros for ease of use. Addins to extend its functionality. Template system for automatic code generation. Supports various programming languages. Setup
Visit the wiki entry Setting up the RadASM environment for more details.
Credits
Code:
Written and Programmed by KetilO
Minor updates including Multilingual installer by fearless
Source Code Pro Font
Source Code Pro
Source Code Pro is a set of OpenType fonts that have been designed to work well in user interface (UI) environments. In addition to a functional OpenType font, this open source project provides all of the source files that were used to build this OpenType font by using the AFDKO makeotf tool.
Download the fonts (OTF, TTF, WOFF, WOFF2, EOT) macOS, Windows, Linux/Unix-based systems --> Link <--
X64 Iczelion's Tutorial -> Автор - Mikl (wasm.in)--> Link <--
Heiko Falk, Peter Marwedel auth. Source Code Optimization Techniques for Data Flow Dominated Embedded Software.pdf
Jeff Duntemann Assembly Language Step-by-Step Programming with Linux.pdf
Joseph Cavanagh X86 Assembly Language and C Fundamentals.pdf
Kip Irvine Assembly Language for x86 Processors 6th Edition.pdf
Larry D. Pyeatt Modern Assembly Language Programming with the ARM Processor.pdf
Manuel Sojer auth. Reusing Open Source Code Value Creation and Value Appropriation Perspectives on Knowledge Reuse.pdf
Margush, Timothy S Some Assembly Required Assembly Language Programming with the AVR Microcontroller.pdf
Mark E. Russinovich, David A. Solomon, Alex Ionescu-Windows Internals, 5th Edition-Microsoft Press (2009).pdf
Mastering CMake. Ken Martin.2009.pdf
Modern X86 Assembly Language Programming 32-bit,64-bit, SSE,and AVX.pdf
Muhammad Ali Mazidi, Sarmad Naimi, Sepehr Naimi, Janice Mazidi ARM Assembly Language Programming and Architecture.pdf
Professor James T. Streib auth. Guide to Assembly Language A Concise Introduction.pdf
Randall Hyde The Art of Assembly Language.pdf
Ray Seyfarth Introduction to 64 Bit Intel Assembly Language Programming for Linux.pdf
Susan Elliott Sim auth., Susan Elliott Sim, Rosalva E. Gallardo-Valencia eds. Finding Source Code on the Web for Remix and Reuse.pdf
Vincent Mahout Assembly Language Programming ARM Cortex-M3.pdf
Windows Driver Foundation.pdf
Yury Magda Visual C++ optimization with assembly code.pdf
М. Руссинович, Д. Соломон - Внутреннее устройство Microsoft Windows 6-е издание (2013).pdf
Род Стивенс - Алгоритмы. Теория и практическое применение.pdf
Руссинович М., Соломон Д.- Внутреннее устройство Microsoft Windows. Часть 2. Основные подсистемы ОС.6-е издание -2014.pdf
KIP R. IRVINE-Assembly Language for x86 Processors-Pearson (2014)
+IRVINE Src
Что нужно иметь ещё ?! - 1. PoLink или лучше всю папку bin от --> Pelles C <-- для x64 2. ml64 linker и подобное от MS от Visual Studio 2017, можно без оптимизации тоже скопировать всю папку, сегодня места хватает на всё. 3. Возможно конвертёр .H файлов headinc.exe, который поставляется вместе с одной IDE под названием EditMasm от автора хидер файлов, синтаксис одинаковый. Отдельно здесь - --> Link <-- 4. Обновлённые макросы для x64 систем - --> Link <-- 5. Мини Пакет разработки драйверов совместно с Full SDK 10.0
Создано: 28 ноября 2016 17:49 New! Цитата · Личное сообщение · #2
у кого заработало? у меня мотивации, похоже, нехватает.. mak может, выложите готовую сборку х64, уже с линкером и либами и расскажете, чем HJWasm лучше fasm?
Создано: 28 ноября 2016 20:47 · Поправил: mak New! Цитата · Личное сообщение · #3
Можно сделать, просто у каждого свои понятия о структуре папок Плюс бинарники студии 1.5 гига .. можно только HJWASM с урезанной версией линкеров и билдеров, плюс настроенный для работы СДК для диска "С". Кто раньше пути настраивал для Масм, у того не должно быть трудностей. На днях сделаю Сборку.
П.С. тема в целом о сложностях в настройке и программинге, можно конкретно спрашивать какие трудности возникли, чтобы другим легче было.
parfetka пишет: расскажете, чем HJWasm лучше fasm?
Дело вкуса, все кто ранее любил masm32, может легко кодить в этом же стиле, только для х64 битных систем, при этом конвертация старых проектов не занимает много времени. В итоге тема, что выбрать масм или fasm?! Каждый сам для себя решит, мне например макросы масмовые нравятся ...
Добавлено спустя 18 часов 36 минут Рабочий комплект - --> Link <--
В архиве - либ файлы от 2015 студии последней, все билдеры и линкеры, утилиты, примеры от HJWASM (не настраивал пути примеров), макросы, WinInc208, sdkrc100 для всех версий виндовс, m64lib и самое важное это папка - Projects, в ней лежит testplugin, это плагин который взят от "мистер бесстрашный" и адаптирован под sdkrc100, раньше он собирался вместе с WinInc208. Т.е. можно собрать батником у себя тестовый плагин для x64dbg и посмотреть менюшки Весь комплект настроен на папку C:\masm32\jWasm\, это можно менять, в основном проект testplugin привязан к этому пути и sdkrc100 в главных инклудах, это тоже всё можно менять.
Единственное, что нужно сделать, это запустить before_use_me.exe - и скопировать верхние константы, у меня они такие
Code:
;constants switch for translate.inc
_WIN32_WINNT equ00000A00h
NTDDI_VERSION equ0A000000h
WINVER equ0A000000h
translate.inc лежит в shared папке ..
P.S. Для чего требуется столько линкеров и билдеров?! Многие ассемблер программисты сейчас пишут двойные макросы под 32 и 64 сразу, проект собирают под обе системы, иногда в целях тестирования или предпочтения размера exe используют другие линкеры, да и просто на всякий случай, пакетом можно собирать как в ml64, так и Hjwasm, в том числе 32 битные и 64 битные приложения. Для 32 Битной системы многие ставят старый masm32, в целях компатибельности был создан такой странный путь.
| Сообщение посчитали полезным: parfetka, Gideon Vi, Orlyonok
Создано: 10 апреля 2017 00:06 New! Цитата · Личное сообщение · #7
почему интересно Хатчинсон за столько лет не запилил MASM64 ? ведь и время и ресурсы для этого есть -- комьюнити ассемблерщиков со всего мира у него на форуме тусуется.
сейчас я так понимаю для х64-кодинга пригодны оригинальный jWasm, ныне заброшенный; HJWasm, ну и fasm. для линухов хз что там, вообще не интересно.
Создано: 10 апреля 2017 00:50 New! Цитата · Личное сообщение · #9
да есть какие-то разрозненные релизы, скажем вот или вот, про это я знаю.
интересует именно масм64 от Хатчинсона, почему не было релиза хз. с другой стороны уже и масм32 давно не обновлялся, я так понимаю программирование на ассемблере умирает ?
Создано: 10 апреля 2017 21:21 New! Цитата · Личное сообщение · #12
makmak пишет: Будет релиз, только чуть позже, он работает над ним почти всё своё свободное время .. пишет утилиты.
приятное известие, спасибо!!
VodoleY пишет: программирование на асме умрет вместе с процом) на чистом асме редко кто пишет, в основном из пефекционизма, но иногда без него тускло
да это понятно конечно )) просто я давно не следил, раньше масм32 регулярно обновлялся, а с 2012 или 2013 года как была 11 версия так и осталась. вот и подумал, может Хатчу надоело или еще что )э
з.ы. удивлен кстати что Tomasz Grysztar cвой ассемблер уже сколько лет поддерживает, святой человек на самом деле! помню что о нем писал Крис:
Code:
Наконец, ни у кого нет гарантий, что создатель FASM'а не утратит к нему интереса, а ведь без поддержки новых процессорных инструкций всякий транслятор обречен на медленное, но неизбежное вымирание. Открытость исходных текстов тут не поможет, помимо них нужна еще и команда. Нужны "носители знания", способные удержать детали проекта у себя в голове, а тот факт, что FASM написан на себе самом, увы, читаемости листингам отнюдь не добавляет.
как видим, fasm пережил Касперски.
Добавлено спустя 8 минут mak пишет: Будет релиз, только чуть позже, он работает над ним почти всё своё свободное время .. пишет утилиты.
кстати еще вопрос, может вы знаете -- насколько мне известно ml64.exe изначально не поддерживал никаких макросов, как эта проблема будет решена в масм64 от Хатча ? или масм64 будет без макросов, чисто инструментарий + конпиль/линковщек ?
Создано: 11 апреля 2017 20:40 New! Цитата · Личное сообщение · #13
VanHelsing пишет: Добавлено спустя 8 минут mak пишет: Будет релиз, только чуть позже, он работает над ним почти всё своё свободное время .. пишет утилиты.
кстати еще вопрос, может вы знаете -- насколько мне известно ml64.exe изначально не поддерживал никаких макросов, как эта проблема будет решена в масм64 от Хатча ? или масм64 будет без макросов, чисто инструментарий + конпиль/линковщек ?
Всё работает, макросы нужно писать, invoke заменили своим макро, чтобы сделать комплект для релиза нужна база с примерами, которую сейчас наполняют функционалом. Парсер хидеров тоже обкатывается. Пакет будет поставляться без бинарников, но всё остальное будет как и в прошлой 32ой версии, плюс новый редактор под 64 бит, сейчас Ассемблер переживает новое рождение, гибкость настолько классная, что существуют коммерческие проекты, которые написаны на чистом ассемблере.
{ Атач доступен только для участников форума } - Macro Sample.rar
Создано: 12 апреля 2017 22:18 · Поправил: hash87szf New! Цитата · Личное сообщение · #15
Попытался минимальную x64 версию собрать. И чё линк.ехе на отсутствие mspdbcore.dll рычит? Эт с того что они частично дебаг инфу теперь и в /release пихают?
Ранг: 334.1 (мудрец) Статус: Участник born to be evil
Создано: 12 апреля 2017 23:23 · Поправил: ajax New! Цитата · Личное сообщение · #16
щерт! (форс-мажоры/suits). меня терзают сомнения, когда fs/gs префиксы юзать в 64, правильно ли опкодится. затейка интересная, несмотря на мс-асм, который меня устраивает
Создано: 13 апреля 2017 14:36 · Поправил: mak New! Цитата · Личное сообщение · #18
hash87szf пишет:
Попытался минимальную x64 версию собрать. И чё линк.ехе на отсутствие mspdbcore.dll рычит? Эт с того что они частично дебаг инфу теперь и в /release пихают?
Может быть ..
Code:
It’s emitted by the linker in Visual Studio 2015and later.
The linker calls it “COFF group information” and you can prevent this
directory from being emitted by specifying the additional linker option
Создано: 23 апреля 2017 02:46 New! Цитата · Личное сообщение · #20
> Интересная статья Щютка да? Чё там буквально сказано то кроме того что его асм медленней сишки?
> At first sight, we tend to believe that assembled code, i.e. machine code obtained from ASM (Assembly Language) source through an Assembler, should run faster than compiled code С первой строки говно, its 2017! Вставил бы хоть VTune листинг, эта пиздец... ёпт да ходь бы дисасм!
>As mentioned, I made a number of optimizations to the ASM > mov r11,0 Л0Л
>Most of the time is spend doing recursion and looping. И юзает hjwasm .while .if макросы...
Помнится AMD CodeAnalyst хелпы читал, так там пример оптимизации как раз матрицы с det были...
Создано: 12 июля 2017 10:57 New! Цитата · Личное сообщение · #22
В шапке обновил линк на новый UASM 2.37 и Easy Code IDE, добавлен RadASM2 с последними фиксами за эти годы.
Добавлен классный шрифт для IDE и Отладчика Source Code Pro Font , можно просто установить один ТТФ Regular и этого хватит. Пример шрифта можно увидеть на картинке RadASM2
Создано: 12 июля 2017 20:06 New! Цитата · Личное сообщение · #24
mak расскжите: 1. в чем идеологическое различие masm и UASM, зачем развивать сразу два компилятора? 2. если есть опенсорсный развивающийся fasm, то не проще ли было сделать к нему надстройку, понимающую синтаксис masm?
Создано: 12 июля 2017 21:09 New! Цитата · Личное сообщение · #25
VOLKOFF тройка совсем непопулярная , я тоже от неё отказался, у меня были с ней трудности и я остался на 2.2, это было правда давно, с тех пор её не обновляли, а вот 2.2 обновляли сначала приватными сериями, а потом кажется fearless собрал всё в один пакет, даже забыл что есть 3.0.
parfetka 1. masm остался более строгий классический, программисту самому нужно заботиться о правилах ассемблера, например учитывать пролог и эпилог, учитывать стековый размер, размер переменных и типы. UASM развивается в сторону сохранения основ ассемблера, но с дополнением высокоуровневых функций и автоматизации, автоматически следит за стеком, следит за типами переменных и типами данных, некоторые макросы типа invoke встроены на уровне ассемблера, в парсер кода. Масм остался строго системным, UASM с удобствами для программиста. UASM опенсорс, подход к продукту наверное разный. 2. Мне не понравился синтаксис фасм, пробовал более 10 раз, это дело вкуса. Как устроены хидеры в фасм даже не знаю, но в УАСМ они аутентичны относительно masm и студии. Смысл надстройки теряется из-за синтаксиса ... она никому не нужна.
Создано: 16 июля 2017 15:37 New! Цитата · Личное сообщение · #26
подскажите по Easy Code: как при создании визуального проекта посмотреть ID контролов? Например, а папке с примерами есть пример "CpuID", в котором единственная кнопка на форме. В коде указан "IDC_CPUID_BUTTON1", который нигде не просматривается.
Создано: 16 июля 2017 18:55 · Поправил: mak New! Цитата · Личное сообщение · #27
parfetka пишет:
подскажите по Easy Code: как при создании визуального проекта посмотреть ID контролов? Например, а папке с примерами есть пример "CpuID", в котором единственная кнопка на форме. В коде указан "IDC_CPUID_BUTTON1", который нигде не просматривается.
Немного сбивает с толку, если выбрать баттон, то в правом меню это как обычно поле Name, ради эксперимента можно поменять название и мы получим изменения в проекте, IDC_CPUID_BUTTON17 поменялось, если добавить скажем ещё одну кнопку и вновь поменять имя, то и название процедуры меняется. CPUID добавление это я так понял название проекта в настройках проекта, тоже можно менять, а идс стандарт. Автор программы конечно слишком жёстко привязал не только в этих местах. Например отдельно файл асма без проекта открыть нельзя. Я использую радасм2 и РесЕд на который указал VOLKOFF, хотя многие любят работать в Easy Code. В радасм нет подобных ограничений .. или удобств, кому как ..
Создано: 16 июля 2017 20:27 New! Цитата · Личное сообщение · #28
mak при создании своего нового проекта этих строк: .if [uCtlID] = IDC_CPUID_BUTTON1 нет!!! Обычно редактор ресурсов позволяет прописать произвольное: #define IDC_CPUID_BUTTON1 1000 в *.rc или *.h файле. Остаётся только создавать проект, компилить, подсматривать значения в Project1Res.h, а затем писать обработчик процедуры.. или читать справку..
GETTING CHILD CONTROL IDENTIFIERS
At run time, all child controls you added in each window object are already created and ready to use when receiving the WM_CREATE message of the window they belong to, that is, the owner window (no children yet in the WM_NCCREATE message). Each child control has an identifier or ID, with its corresponding constant name (upper case). To refer to any control using this constant, once again, you should take into account a simple rule. The constant name is all upper case and is formed by 'IDC_' plus the name of the owner window, plus '_', plus the control object name. For example, the ID constant name for a Static control named stcLabel, belonging to a window named wndMain, will be:
IDC_WNDMAIN_STCLABEL просто хотелось больше контроля..
Создано: 16 июля 2017 21:56 · Поправил: mak New! Цитата · Личное сообщение · #29
parfetka
Файл генерируется при первом билде (4 - Easy Code generates an RC file and its corresponding header file (*.H) When compiling an RC file with all Easy Code resources, it will be generated and placed in the folder of the project directory.), там появляется файл CPUidRes.h в котором есть строки -
Code:
#define IDR_VERSION 1
#define IDI_APP_ICON 100
#define IDR_EC_ACCEL_TABLE 101
#define RT_FILEDATA 256
#define IDC_CPUID_BUTTON1 1000
Если редактировать файл ресурсов, ничего не поменяется, но изикод использует свою структуру даже здесь, для меня удобнее иметь бат сборку, в RADASM2 можно иметь два варианта сразу, хотя батник это святое. Как вариант, добавить все контролы, потом сделать ген ресурсов, тогда можно увидеть имена. В хэлпе вероятно есть другое решение, так как сам изикод не использую, сказать точно не могу.
Вот из хэлпа
Code:
GETTING CHILD CONTROL IDENTIFIERS
At run time, all child controls you added in each window object are already created
and ready to use when receiving the WM_CREATE message of the window they belong to,
that is, the owner window (no children yet in the WM_NCCREATE message). Each child
control has an identifier or ID, with its corresponding constant name (upper case).
To refer to any control using this constant, once again, you should take into account
a simple rule. The constant name is all upper case and is formed by 'IDC_' plus the
name of the owner window, plus '_', plus the control object name. For example, the
ID constant name for a Static control named stcLabel, belonging to a window named
wndMain, will be:
IDC_WNDMAIN_STCLABEL
In most cases, the owner window and the parent of the control object are the same
(i.e. when you place a control object directly on the window object), but as we
saw before, there are three type of controls (Group, Picture and Rebar) which are
containers and may have child controls inside them. When that is the case, it DOES
NOT AFFECT the ID constant name! It continues being formed by IDC_, plus the owner
window name (not its parent,if any other), plus '_', plus its own name,
what makes your work easier not having to remember which is parent of which.
Создано: 20 августа 2017 15:18 · Поправил: mak New! Цитата · Личное сообщение · #30
Видимо есть ограничения на размер одного поста, т.к. текст уже не влезает в первый пост
VanHelsing пишет: почему интересно Хатчинсон за столько лет не запилил MASM64 ?
Первая полная beta MASM64 - http://www.masm32.com/download/build_x64.zip бинарники от студии как обычно самостоятельно копировать в папку бин. Ему кстати уже 69 лет, возраст тоже влияет на скорость хобби , может через год будет финальная версия.