Сейчас на форуме: -Sanchez-, Alf, Adler, Rio (+6 невидимых)

 eXeL@B —› Софт, инструменты —› X64 Assembler Programming - UASM - JWasm
<< . 1 . 2 . 3 . >>
Посл.ответ Сообщение


Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 26 ноября 2016 23:55 · Поправил: Модератор
· Личное сообщение · #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.


Updated
Code:
  1. UASM 2.49 (32bit)          21/06/2019       uasm249_x86.zip        32bit Binary Package (Windows)
  2. UASM 2.49 (64bit)          21/06/2019       uasm249_x64.zip        64bit Binary Package (Windows)
  3. UASM 2.49 (Linux 64bit)    21/06/2019       uasm249_linux64.zip  64bit Linux Executable (GCC)
  4. UASM 2.47 (OSX Universal)  17/11/2018        uasm247_osx.zip         64bit OSX Executable (GCC)

--> 32bit <-- , --> 64bit <-- , --> Linux 64bit <-- , --> OSX <--

Full SDK 10.0 translate for 64 and 32 bits --> Link <--
--> Site <--
Примеры с этими хидерами - --> Link <--

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

Project
--> Fork <--

Latest Release - Zips
--> FullPackage <--

Code:
  1. Downloads
  2. 1.74 MB Assembly.zip
  3. 1.14 MB HighLevel.zip
  4. 203 KB Language.zip
  5. 4.6 MB RadASM-2.2.2.2-FullPackage.zip
  6. 1.03 MB RadASM-2.2.2.2-IDEOnly.zip
  7. 549 KB RAHelp.zip
  8. Source code (zip)
  9. Source code (tar.gz)


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:
  1. Written and Programmed by KetilO
  2. 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 <--

--> Link <--

Актуальные книги программисту на X64 ассемблере - --> Link <--
P a s s - Assembler64

Список:

Code:
  1. AMD64 Architecture Programmer's Manual\
  2. Russinovich M. - Windows Internals, Part 1, 6th Edition - 2012\
  3. Russinovich M. E., Solomon D. A., Ionescu A. - Windows Internals, 6th ed. - 2012\
  4. Windows 7 Device Driver\
  5. Randall Hyde The Art of Assembly Language.epub
  6. Andrew Whitechapel, Sean McKenna-Windows Phone 8 Development Internals-Microsoft Press (2013).pdf
  7. Ata Elahi, Trevor Arjeski auth. ARM Assembly Language with Hardware Experiments.pdf
  8. coder32.pdf
  9. coder64.pdf
  10. Daniel Kusswurm Modern X86 Assembly Language Programming 32-bit, 64-bit, SSE, and AVX.pdf
  11. Dmitry Vostokov-Memory Dump Analysis Anthology. 7-Opentask (2014).pdf
  12. Heiko Falk, Peter Marwedel auth. Source Code Optimization Techniques for Data Flow Dominated Embedded Software.pdf
  13. Jeff Duntemann Assembly Language Step-by-Step Programming with Linux.pdf
  14. Joseph Cavanagh X86 Assembly Language and C Fundamentals.pdf
  15. Kip Irvine Assembly Language for x86 Processors 6th Edition.pdf
  16. Larry D. Pyeatt Modern Assembly Language Programming with the ARM Processor.pdf
  17. Manuel Sojer auth. Reusing Open Source Code Value Creation and Value Appropriation Perspectives on Knowledge Reuse.pdf
  18. Margush, Timothy S Some Assembly Required  Assembly Language Programming with the AVR Microcontroller.pdf
  19. Mark E. Russinovich, David A. Solomon, Alex Ionescu-Windows Internals, 5th Edition-Microsoft Press (2009).pdf
  20. Mastering CMake. Ken Martin. 2009.pdf
  21. Modern X86 Assembly Language Programming 32-bit, 64-bit, SSE, and AVX.pdf
  22. Muhammad Ali Mazidi, Sarmad Naimi, Sepehr Naimi, Janice Mazidi ARM Assembly Language Programming and Architecture.pdf
  23. Professor James T. Streib auth. Guide to Assembly Language A Concise Introduction.pdf
  24. Randall Hyde The Art of Assembly Language.pdf
  25. Ray Seyfarth Introduction to 64 Bit Intel Assembly Language Programming for Linux.pdf
  26. Susan Elliott Sim auth., Susan Elliott Sim, Rosalva E. Gallardo-Valencia eds. Finding Source Code on the Web for Remix and Reuse.pdf
  27. Vincent Mahout Assembly Language Programming  ARM Cortex-M3.pdf
  28. Windows Driver Foundation.pdf
  29. Yury Magda Visual C++ optimization with assembly code.pdf
  30. М. Руссинович, Д. Соломон - Внутреннее устройство Microsoft Windows 6-е издание (2013).pdf
  31. Род Стивенс - Алгоритмы. Теория и практическое применение.pdf
  32. Руссинович М., Соломон Д. - Внутреннее устройство Microsoft Windows. Часть 2. Основные подсистемы ОС. 6-е издание - 2014.pdf
  33. KIP R. IRVINE-Assembly Language for x86 Processors-Pearson (2014)
  34. +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

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube


| Сообщение посчитали полезным: zds, plutos, VOLKOFF, elch, Gideon Vi, VodoleY, Vintersorg, HandMill, Orlyonok, DenCoder, Isaev, BlackCode, 4kusNick


Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 27 августа 2017 16:54
· Личное сообщение · #2

Обновление в шапке

UASM 2.39 (32bit) 25/08/2017 uasm239_x86.zip 32bit Binary Package (Windows)
UASM 2.39 (64bit) 25/08/2017 uasm239_x64.zip 64bit Binary Package (Windows)
UASM 2.39 (Linux 64bit) 25/08/2017 uasm239_linux64.zip 64bit Linux Executable (GCC)
UASM 2.39 (OSX Universal) 25/08/2017 uasm239_osx.zip 64bit OSX Executable (GCC)

История

Code:
  1. 2.39 Improved string literal handling and fixed a bug where it wouldn’t work in vararg
  2. parameters.
  3. Added DEFINE/UNDEF built-in commands.
  4. Optimised SWITCH generated code, moved jump tables to data sections to avoid
  5. affecting code sections/code caching and line number to offset references.
  6. 2.38 Fixed more listing issues with binary zeroes.
  7. Improved UTF bom check performance by moving to ProcessFile (Nidud)
  8. Fixed an encoding issue with LEA and RIP.
  9. Fixed IFNDEF macro generation bug.
  10. Fixed SYSCALL, FASTCALL64 and VECTORCALL parameter order and type
  11. checking bugs.
  12. Added new instructions: ADOX, VAESDEC, ADCX, CLAC, RDPID, CLFLUSHOPT
  13. Fixed an index register encoding bug and improved checking for valid forms of
  14. vscatter and vgather.


-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube





Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 13 октября 2017 23:57 · Поправил: mak
· Личное сообщение · #3

Обновление как обычно в шапке. Может Администраторы закрепят тему в шапке, чтобы не постить вечно обновления, а править только первый пост. Софт не совсем по теме изучения защит, но косвенно является существенным подспорьем.

UASM 2.42 (32bit) 13/10/2017 uasm242_x86.zip 32bit Binary Package (Windows)
UASM 2.42 (64bit) 13/10/2017 uasm242_x64.zip 64bit Binary Package (Windows)
UASM 2.40 (Linux 64bit) 20/09/2017 uasm240_linux64.zip 64bit Linux Executable (GCC)

Code:
  1. -------------------------------------
  2. Changelog:
  3. -------------------------------------
  4.  
  5. 2.42
  6.  
  7. Add support for 128bit records.
  8. Add several new macros to library for handling 128 data types and bit shifts.
  9. Prevent .686 etc cpu modes from resetting extended cpu flags set by .mmx .xmm etc.
  10. Change typedef Ofssize to use 32bit or 64bit based on output format option default if it 
  11. occurs prior to cpu setting directives. This was causing an invalid fixup type at link time.
  12. Fix 32bit proc bug when no prologue or FPO still using ebp instead of esp to reference parameters.
  13. Add support to BIN output type to allow option win64 to apply the standard windows 64bit ABI and defaults.
  14. Fix uses location when custom prologue used.
  15. Prevent rip/eip relative address generation when using fs or gs registers.
  16. Fix bug with string literals and vararg count > 2.
  17. Fix parser bug that causes instructions with a missing comma to simply disappear.
  18. Add versioninfo to VS solution.
  19. Fix RV macro in macrolib to prevent generation of instructions like lea ecx,10
  20.  
  21. 2.41
  22.  
  23. Re-implemented RECORD operator and directive to fully support registers and up to 32bit record fields.
  24.  
  25. 2.40     
  26.  
  27. Switch fixes for negative cases and optimisations.
  28. Removed BND prefix from JCXZ instruction group to fix encoding issues in 16/32bit.
  29. Fixed literal string bug in 32bit mode.
  30. Cleaned up manual and moved history/roadmap to history.txt


-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube


| Сообщение посчитали полезным: anonymous


Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 05 декабря 2017 00:08 · Поправил: mak
· Личное сообщение · #4

Версия 2.46 с Roadmap для 2.47

Code:
  1. -------------------------------------
  2. Roadmap:
  3. -------------------------------------
  4.  
  5. 2.47
  6.  
  7. Add DWARF symbolic debugging support.
  8. Add support for GOT relative addressing.
  9. Ensure includelib is fully cross-platform.
  10. Supply installation packages via brew, apt-get.
  11. Extract vectorcall handling to be compatible with all modes.
  12. Replace HLL .repeat / .until directive LOOPS with branches.
  13. Finalise regression test suite.
  14. Begin work on CodeGen V2 with automated instruction table builder.
  15.  
  16. -------------------------------------
  17. Changelog:
  18. -------------------------------------
  19.  
  20. 2.46
  21.  
  22. Unify manuals into single document.
  23. Correct some misplaced samples in the packages.
  24. Support return types and vectorcall in OO interfaces and update OO sample.
  25. Allow c-style calls via pointer and OO methods.
  26. Add return type support to OO interfaces.
  27. Add signed 1 byte displacement optimisation to all vex and evex encoded memory operands.
  28. Minor optimisation in the pre-processor stage.
  29. Fix incorrect detection of used proc parameter vs. global struct member.
  30. Add .endf and .endsw aliases for .endfor and .endswitch
  31. Add C-style function calling.
  32. Promote immediate vararg arguments to qword when too large for signed dword.
  33. Implement first phase of full regression test suite.
  34. Correct all regression and back-testing findings.
  35. Add COMINTERFACE support built-in.
  36.  
  37. 2.45
  38.  
  39. Updated and cleaned up the unix build.
  40. Re-organized the samples folder and descriptions.
  41. Fixed usage text to show SSE as the default architecture.
  42. Fixed 32bit addressing mode issue when using Array[n] (variable indexed by constant).
  43. Add -macho64 output format support.
  44. Minor RBP stack-frame fixes.
  45. Fix for RSP stack setup using WIN64 < 11.
  46. Added two new samples osx1.asm, osx2.asm for macho64 output.
  47. Adjusted local arrangement with RBP stack-frame to minimize required padding and ensure all locals are always aligned so win64:7 is obsolete.
  48. Vsubpd xmm0, xmm0, zmm14 now generates an error.
  49. Fix for vmovupd addressing mode.
  50. Added new sample crossplatform/hello.asm demonstrating a simple console app that assembles on win64, linux and osx.
  51.  
  52. 2.44
  53.  
  54. Fixed a long standing bug in the expression evaluator where values were not being correctly sign extended to 64bit.
  55. Added Frame BIAS to RBP to increase the range of parameters/locals that can be accessed with 1byte displacement (shorter code, better for instruction fetch).
  56. Optimised RBP prologue to use correctly sized writes and use the 2's complement form to modify RSP.
  57. Fixed the console colour issue causing ERROR to be defined incorrectly thus breaking command line parameters.
  58. Added support to prologue for hot patching.
  59.  
  60. 2.43.3
  61.  
  62. Fixed ERROR definition from including Windows.h by creating custom include for colour console output - Was causing -D command line parameters not to evaluate.
  63. Optimised RBP prologue Save Home Registers to use the best matching type instead of always storing the full QWORD.
  64.  
  65. 2.43.1 / .2
  66.  
  67. Add console colours for Windows, OSX and Linux.
  68. Fix frame + frame:auto/noauto modes to match jwasm/masm.
  69. Add argtype, argsize, argidx operators
  70. Add additional 128bit record functionality for inline declaration.
  71. Fix potential invoke register overwritten warnings not being detected.
  72. Improve rbp frame generation compatibility with ml64.
  73. Optimise AVX instruction encoding to use signed byte displacement where possible.
  74. Rework RBP based code-paths to deal with WIN64:0 (default) in an ML64 compatible way.


Появился новый билд -

Code:
  1. UASM 2.46.5 (32bit)        14/12/2017      uasm246_x86.zip        32bit Binary Package (Windows)
  2. UASM 2.46.5 (64bit)        14/12/2017      uasm246_x64.zip        64bit Binary Package (Windows)
  3. UASM 2.46.5 (Linux 64bit)  14/12/2017         uasm246_linux64.zip       64bit Linux Executable (GCC)
  4. UASM 2.46.5 (OSX Universal)         14/12/2017       uasm246_osx.zip         64bit OSX Executable (GCC)


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

Пример -

Code:
  1. ; -> Using a FRAME PROC as the entry point for both Console and Windows applications is advised to ensure correct stack startup.
  2. MainCRTStartup PROC FRAME
  3.     
  4.     LOCAL person2:PTR Person        
  5.     ; A local variable to hold a reference to a Person type. (Note you can also use _DECLARE if the Object name includes <>).
  6.          
  7.     invoke GetStdHandle,STD_OUTPUT_HANDLE
  8.     mov hOutput,rax
  9.     
  10.     ; Create two Person instances.
  11.     mov person1, _NEW(Person, 30, hOutput, CSTR("Jane Doe "))
  12.     mov person2, _NEW(Person, 40, hOutput, "Peter Smith ")      ; Use string literals.
  13.     
  14.     _INVOKE Person, PrintName, person1             ; Direct call (Type, Method, arguments)
  15.     _VINVOKE person2, Person, PrintName           ; Vtable call (instance, Type, Method)
  16.     _INVOKE Person, SetName, person1, CSTR("Michael Smith ")
  17.     _INVOKE Person, PrintName, person1             
  18.     
  19.     _INVOKE Person, Calc, person1, 1.0
  20.     _VINVOKE person2, Person, Calc, 1.0
  21.     _INVOKE Person, Calc2, person2, xmm4, xmm5        ; Vectorcall based method.
  22.  
  23.     ; Use return type information.
  24.     .if( _V(person1, Person, Calc, 1.0) == FP4(2.0) )
  25.         xor eax,eax
  26.     .endif
  27.  
  28.     mov rax, _STATIC(Person, IsHuman, person1)        ; Default return type from _STATIC is 64bit integer.
  29.  
  30.     ; Method invocation via register pointer.
  31.     lea rsi, person1
  32.     _INVOKE Person, Calc, [rsi], 1.0
  33.     _VINVOKE [rsi], Person, Calc, 1.0
  34.     .if( _V([rsi], Person, Calc, 1.0) == FP4(2.0) )
  35.         xor eax,eax
  36.     .endif
  37.  
  38.          ; Method invocation using c-style calls.
  39. albl:  person1->Calc(1.0)
  40.          person2->Calc(2.0)
  41.     .if( person1->Calc(1.0) == FP4(2.0) )
  42.         xor eax,eax
  43.     .endif
  44.                  
  45.          ; Using a register as an object pointer with c-style calls requires the type to specified after the pointer.
  46.          ; The register must be doubley-indirect, in that it points to the pointer to the object, which allows for rapid iteration through lists of object pointers.
  47.          lea rsi,person1
  48.          [rsi].Person->Calc(1.0)
  49.     .if( [rsi].Person->Calc(1.0) == FP4(2.0) )
  50.         xor eax,eax
  51.     .endif
  52.          xor rax,rax
  53.          lea rsi,person2
  54.          [rsi+rax].Person->Calc(1.0)
  55.          xor rax,rax
  56.     .if( [rsi+rax].Person->Calc(1.0) == FP4(2.0) )
  57.         xor eax,eax
  58.     .endif
  59.  
  60.          person1->Calc( person2->Calc(1.0) )                 ; Pass the typed result of a method call to another method.
  61.          NormalProc( person1->Calc(1.0) )     ; Pass the typed result of a method call to a normal procedure.
  62.          person1->Calc( NormalProc(1.0) )     ; Pass the typed result of a normal procedure to a method call.
  63.          person2->DoAdd( 1.0, NormalProc(2.0) )      
  64.  
  65.     ; Delete the objects.
  66.     _DELETE(person1)
  67.     _DELETE(person2)
  68.  
  69.     ret
  70. MainCRTStartup ENDP


-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube





Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 12 февраля 2018 12:59 · Поправил: mak
· Личное сообщение · #5

Обновились RadASM v2.2.2.3, UASM все версии, Easy Code IDE, все линки обновлены в шапке.

Интересное дополнение для Ассемблера - Asm-Dude



Assembly syntax highlighting and code assistance for assembly source files and the disassembly window for Visual Studio 2015 and 2017.



This extension can be found in the visual studio extensions gallery or download latest installer AsmDude.vsix (v1.9.4.2). If assembly is too much of a hassle but you still want access to specific machine instructions, consider Intrinsics-Dude.

--> Link <--

Ещё одно - Intrinsics-Dude



--> Link <--

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube





Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 22 февраля 2018 16:29
· Личное сообщение · #6

A proper terminal for Visual Studio



Whack Whack Terminal is an experimental free plugin for Visual Studio 2017 that aims to bring a full terminal inside of Visual Studio.

--> Info <--
--> Download <--

Это дополнение поможет сделать из Визуал Студии полноценное IDE для программирования на ассемблере, для этого нужно установить Intrinsics-Dude, Asm-Dude, файлы конфигурации билда YASM, NASM, MASM, MASM64, UASM, а потом уже Whack Whack Terminal.

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube


| Сообщение посчитали полезным: BlackCode, plutos, Bronco


Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 25 февраля 2018 09:30
· Личное сообщение · #7

mak пишет:
для этого нужно установить Intrinsics-Dude, Asm-Dude, файлы конфигурации билда YASM, NASM, MASM, MASM64, UASM, а потом уже Whack Whack Terminal.


именно в таком порядке? Насколько важен порядок установки? и важен ли вообще?
Куда именно устанавливать? или нужно update PATH и/или еще какие environmental variables?

-----
Give me a HANDLE and I will move the Earth.





Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

Создано: 25 февраля 2018 10:45 · Поправил: Bronco
· Личное сообщение · #8

mak, писать чисто на асме удовольствие ещё то, где то выигрываем,
но если сложные выражения, особено в циклах и пост_пред_условиях,
то высокий уровень всё таки комфортней
собственно не об этом....в х64 нет асм инлайна, но хочу...
это обнова с дудами поможет?
ибо запарился с реализацией на с++, сдвига двойной точности.

-----
Чтобы юзер в нэте не делал,его всё равно жалко..





Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 25 февраля 2018 13:26
· Личное сообщение · #9

Bronco пишет:
в х64 нет асм инлайна, но хочу

Что мешает собрать нужный код на асме, скомпилить и линковать в основную сишную прогу как obj/lib?



Ранг: 315.1 (мудрец), 631thx
Активность: 0.30.33
Статус: Модератор
CrackLab

Создано: 25 февраля 2018 14:24
· Личное сообщение · #10

Bronco пишет:
в х64 нет асм инлайна

Intel Parallel Studio интегрируется с Visual Studio

| Сообщение посчитали полезным: mak

Ранг: 431.7 (мудрец), 391thx
Активность: 0.730.32
Статус: Участник

Создано: 25 февраля 2018 14:48 · Поправил: dosprog
· Личное сообщение · #11

Bronco пишет:
в х64 нет асм инлайна, но хочу... [...]
ибо запарился с реализацией на с++, сдвига двойной точности.

Archer пишет:
Что мешает собрать нужный код на асме, скомпилить и линковать в основную сишную прогу как obj/lib?

С одной стороны, имхо, не так всё сложно и на Си, - надо просто внутренне настроиться на категории асма,
а с другой - раздельная компиляция это всё-таки дополнительный головняк.

.. для себя давно решил - стараться не смешивать.
В принципе, если уже совсем нет другого выхода, - тогда, наверное, лучше DLL?..
Тоже несимпатичный вариант.






Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 25 февраля 2018 15:37
· Личное сообщение · #12

Если по-хорошему, это только у мелкомягкого компилятора такой головняк, у того же интела таких проблем нет. Т.е. можно юзать ту же студию как иде, но компилить чем-то другим. Это раз.
Второе, можно настроить автоматический билд в 1 солюшене асм-исходника, си-исходников и линковка их в 1 ехе. Т.е. билдится стандартно солюшен и всё.
Так что особо проблем тут не вижу, даже если хочется часть и на асме накидать.
Как бонус вариант-попытаться от асма избавиться, заюзав интринзики. Местами может помочь, но не на каждую асм-инструкцию есть инринзик, понятное дело.

| Сообщение посчитали полезным: mak


Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 25 февраля 2018 16:34 · Поправил: mak
· Личное сообщение · #13

Привет всем,

plutos пишет:
именно в таком порядке? Насколько важен порядок установки? и важен ли вообще?
Куда именно устанавливать? или нужно update PATH и/или еще какие environmental variables?


Без разницы, дело удобства, для масм файлы конфигурации нужно самому делать, есть статья в интернете, для остальных файлов конфигурации есть прямо в релизах ассемблеров. Мне кажется настроить конфигурации занимает больше времени, чем установка этих плагинов. Пути тоже, как удобнее

Bronco сила ассемблера в "Макро" определениях, от си он ничем не отличается, кроме формальной записи языка и возможности переносить код на другие системы, что определяется компилятором. В остальном такие же переменные, расширенные лишь для логики компилятора, имея набор макросов, код можно писать почти один в один , поэтому дело вкуса и умения. Обычно любимый язык отражает мышление программиста, как и почерк, заставить думать иначе, весьма непосильная задача.

Bronco пишет:
собственно не об этом....в х64 нет асм инлайна, но хочу...

Инлайн есть в GCC, можно установить msys2 и делать модули для линковки, рациональнее подход Archerа, т.к. в большинстве случаев инлайн не нужен, всё остальное покрывается внешними модулями, подключать можно и простым вызовом функций в отдельном .асм файле. Обнова с Дудами не поможет, т.к. это не патчер компилятора В частных случаях инлайн можно заменить на x64 (amd64) Intrinsics List --> Link <-- и использовать например комбинацию AVX2:
Code:
  1. __m256i _mm256_bslli_epi128 (__m256i a, const int imm8)
  2. __m256i _mm256_bsrli_epi128 (__m256i a, const int imm8)
  3. __m256i _mm256_or_si256 (__m256i a, __m256i b)

То же самое думаю можно найти и для SSE2 и AVX если процессор старый.

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube





Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 27 февраля 2018 02:41
· Личное сообщение · #14

Archer пишет:
это только у мелкомягкого компилятора такой головняк, у того же интела таких проблем нет.


речь идет об "раздельной компиляции"?

-----
Give me a HANDLE and I will move the Earth.




Ранг: -0.7 (гость), 170thx
Активность: 0.540
Статус: Участник

Создано: 27 февраля 2018 03:59
· Личное сообщение · #15

plutos пишет: речь идет об "раздельной компиляции"?

только ms выкинули x64 инлайн ассемблер, у остальных он есть, но в студию интегрируются clang\intel и неплохо прикидываются родным компилятором, gcc тоже относительно нормально интегрируется, но чуть менее радужно.

| Сообщение посчитали полезным: plutos


Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 02 апреля 2018 12:40 · Поправил: mak
· Личное сообщение · #16

ObjAsm64 Version 1.0 Beta

--> ObjAsm64 <--

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube




Ранг: 23.7 (новичок), 11thx
Активность: 0.040.02
Статус: Участник

Создано: 11 июня 2018 05:41
· Личное сообщение · #17

mak и остальные, кто знает:
Подскажите, как в EasyCode с fasm'ом собрать exe, который бы выводил кирилицу в messagebox? Для чего в IDE галки ASCL/Unicod, если она не хочет собирать в Unicod, а в ASCL выводит крякозябры? В каком формате должен быть исходник проекта, чтобы собирать в ASCL/Unicod? Или у меня старые сборщики ресурсов и линкер? Моя сборка EasyCode прилагается, распаковать на диск С: https://yadi.sk/d/xQTw3nUN3XisBt




Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 13 июня 2018 22:31
· Личное сообщение · #18

parfetka

Выше уже писал, что в фасм полный профан, обычно строку записывают в формате юникода или транслируют её потом, а выводят с помощью соответствующей апи
Code:
  1. MessageBoxA
  2. MessageBoxW

EasyCode тоже не использую, так как он автоматизирует некоторые моменты отнимая контроль у пользователя, и галочек тоже не встречал "в IDE галки ASCL/Unicod", если такой параметр есть, то вероятно в изикод есть своя обработка хидеров для фасма, точнее настроек хидеров. У крякозябр тоже могут быть разные причины, для дополнительной информации можно заглянуть в файл помощи EasyCode, там обычно всё доступно написано. И ещё лучше этот вопрос задать на профильном форуме --> Link <--, там например пишут

Code:
  1. win32ax -- Win32 no unicode 
  2. win32wx -- Win32 with unicode 
  3. win64ax -- Win64 no unicode 
  4. win64wx -- Win64 with unicode


Code:
  1. ; example of simplified Windows programming using complex macro features
  2.  
  3. include 'win32ax.inc' ; you can simply switch between win32ax, win32wx, win64ax and win64wx here
  4.  
  5. .code 
  6.  
  7.   start: 
  8.         invoke  MessageBox,HWND_DESKTOP,"Hi! I'm the example program!",invoke GetCommandLine,MB_OK 
  9.         invoke  ExitProcess,0 
  10.  
  11. .end start


в IDE этот параметр может означать или формальную обработку хидеров для фасм, или же параметры сохранения проекта, т.е. исходного кода в юникоде. Мне кажется определить это легко испытав разные варианты.

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube


| Сообщение посчитали полезным: parfetka


Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 21 июня 2018 12:54 · Поправил: f13nd
· Личное сообщение · #19

mak пишет:
win32ax -- Win32 no unicode 
win32wx -- Win32 with unicode 
win64ax -- Win64 no unicode 
win64wx -- Win64 with unicode

Это всё условное деление, чтоб фасм сам выбирал unicode или ascii-функции для импорта, ничто не мешает MessageBoxW вписать с *ax-заголовком и дать ему уникод-строку. Кириллица в фасмоисходниках в cp1251, аски-строки директива db, уникод du. Галки в EasyCode очевидно для выбора правильной кодировки исходника, так что не-юникод там надо выбрать.

Соответственно
Code:
  1. invoke MessageBoxA,0,a,a,0
  2. ret
  3. db 'Здравствуй мир',0


Code:
  1. invoke MessageBoxW,0,u,u,0
  2. ret
  3. u du 'Здравствуй мир',0


-----
2 оттенка серого




Ранг: 23.7 (новичок), 11thx
Активность: 0.040.02
Статус: Участник

Создано: 21 июня 2018 14:55
· Личное сообщение · #20

f13nd
в IDE fasm'a получается скомпилить, чтобы выводились русские буквы (не смотрел unicode или ascii, охотно верю, что возможны любые варианты). В EasyCode не получается никак, ни с какими настройками/галками/кодировками страницы/подключением инклудов из папки fasm'a. Достучался до автора EasyCode, он проникся проблемой, сказал, что это проблемы у самого fasm'a (?!), и сейчас он общается с Томасом, чтобы это пофиксить. Также пообещал прикрутить горячие клавиши и "свободный проект" (вид проекта с полным контролем исходного кода, как в IDE fasm'a) в следующей версии.

| Сообщение посчитали полезным: mak


Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 21 июня 2018 15:44 · Поправил: f13nd
· Личное сообщение · #21

parfetka пишет:
в IDE fasm'a получается скомпилить, чтобы выводились русские буквы (не смотрел unicode или ascii, охотно верю, что возможны любые варианты). В EasyCode не получается никак, ни с какими настройками/галками/кодировками страницы/подключением инклудов из папки fasm'a. Достучался до автора EasyCode, он проникся проблемой, сказал, что это проблемы у самого fasm'a (?!), и сейчас он общается с Томасом, чтобы это пофиксить. Также пообещал прикрутить горячие клавиши и "свободный проект" (вид проекта с полным контролем исходного кода, как в IDE fasm'a) в следующей версии.

Проблема это когда EasyCode хранит исходники в UTF-16LE, а конвертирует в заявленный в настройках ANSI всегда в кодировке cp1252. Чтоб были русские буквы надо пропатчить 4E4(1252) на 4E3(1251) как показано на картинке.--> Link <--

ЗЫ: программа ужасная...

-----
2 оттенка серого


| Сообщение посчитали полезным: parfetka

Ранг: 23.7 (новичок), 11thx
Активность: 0.040.02
Статус: Участник

Создано: 21 июня 2018 16:43
· Личное сообщение · #22

вот, одной проблемой меньше. В ascii выводит после патча. В unicode пока не удалось скомпилить..
п.с. Что же в ней ужасного? Красивая подсветка, удобная настройка, автокомплит Api, макросы .if...else и другие, объявление переменных и строк по месту, вложенные функции, редактор ресурсов. Также есть объекты и методы, с которыми ещё не разобрался как использовать.. Альтернатив-то нет: np++ без автокомплита, и RadASM без макросов..




Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 21 июня 2018 16:56 · Поправил: f13nd
· Личное сообщение · #23

parfetka пишет:
Что же в ней ужасного? Красивая подсветка, удобная настройка, автокомплит Api, макросы .if...else и другие, объявление переменных и строк по месту, вложенные функции, редактор ресурсов.

include 'macro\if.inc' - это .if .elseif .else .endif, вполне себе стоковый фасм
include 'win32ax.inc' - это в том числе и объявление строк по месту (стрёмное, использую другое), и директива addr, которая офигенна. Не изикод, стоковый фасм.
Редактор ресурсов? Что не так с макросами стокового фасма для этого?
Про макроязык фасма я вообще молчу, это чисто ван лов.
По-моему это попытка сделать из конфеты что-то типа MS Visual Studio, но о вкусах не спорят.
Когда эта штука потребовала у меня масм при создании проекта для фасма, я решил, что это шутка.

-----
2 оттенка серого




Ранг: 23.7 (новичок), 11thx
Активность: 0.040.02
Статус: Участник

Создано: 21 июня 2018 19:59
· Личное сообщение · #24

f13nd пишет:
Когда эта штука потребовала у меня масм при создании проекта для фасма, я решил, что это шутка.

не было такого! у меня. Что тогда остаётся? RadASM? Я только начал его настраивать. Пока даже masm не убрал полностью из меню.. У него не очевидные настроики ini. Без автокомплита и подсветки в IDE fasm'a совсем скучно..




Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 21 июня 2018 20:51 · Поправил: f13nd
· Личное сообщение · #25

parfetka пишет:
Без автокомплита и подсветки в IDE fasm'a совсем скучно.

СиШарп? ДотНет? ПрограммированиеМышью? Имхо ассемблер выбирают не за комфорт и легкость. Это литры чая и килограммы никотина за переписыванием чёртовых интерфейсов/структур со студии, потому что за тебя это никто не делать не будет. Это 2/3 всех ссылок в гугле для сишарпа-атл-мфс-басика-и-прочей-комовщины, где ты будешь гадать "а этот вариант в аргументах - указатель или прямо в стек запихивается?". Так что если ищешь удобств, наверное искать надо совсем не в этом месте.

-----
2 оттенка серого





Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 24 июня 2018 14:10
· Личное сообщение · #26

f13nd пишет:
parfetka пишет:
Без автокомплита и подсветки в IDE fasm'a совсем скучно.
СиШарп? ДотНет? ПрограммированиеМышью? Имхо ассемблер выбирают не за комфорт и легкость. Это литры чая и килограммы никотина за переписыванием чёртовых интерфейсов/структур со студии, потому что за тебя это никто не делать не будет. Это 2/3 всех ссылок в гугле для сишарпа-атл-мфс-басика-и-прочей-комовщины, где ты будешь гадать "а этот вариант в аргументах - указатель или прямо в стек запихивается?". Так что если ищешь удобств, наверное искать надо совсем не в этом месте.


Это не значит, что нельзя сделать удобно, я думаю многие кто не знает язык хорошо и не пишет на нём каждый день, сравнивает его с листингом дизассемблера, это ошибочное мнение, посмотреть хотяб примеры ООП которые я выше постил, посмотреть ObjAsm, примеры настолько изящные, что глаз радуется такой красоте. Переписывание интерфейсов не такое уж и трудное занятие, когда уже знаешь что к чему, с помощью дополнительных утилит это реализуемо

parfetka пишет:
не было такого! у меня. Что тогда остаётся? RadASM? Я только начал его настраивать. Пока даже masm не убрал полностью из меню.. У него не очевидные настроики ini. Без автокомплита и подсветки в IDE fasm'a совсем скучно..


С автокоплитом сложнее сейчас, т.к. проиходит переход на х64, всё будет со временем, над автокомлитом сейчас уже работают. Подсветка в РадАсм тоже настраивается, я использую в основном IDE из-за удобства создания проекта и его контроля, подсветки, в остальном другие функции использую редко.

parfetka пишет:
и RadASM без макросов..

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

По теме далее:
pellesc 9.0 Release Candidate #2 ( Jun 19, 2018 ) --> Link <-- - major changes between 8.00 and 9.00 --> Link <--


52f1_24.06.2018_EXELAB.rU.tgz - macros64upd.zip

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube


| Сообщение посчитали полезным: parfetka


Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 24 июня 2018 14:45 · Поправил: f13nd
· Личное сообщение · #27

mak пишет:
Это не значит, что нельзя сделать удобно

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

-----
2 оттенка серого


| Сообщение посчитали полезным: mak


Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 26 июня 2018 10:16
· Личное сообщение · #28

Я че-то проникся этой темой удобств, может правда столько лет неправ был)
--> Link <--
С подсветкой что только ни делал - дико смотрится. Получился аутентичный фасм с макросами на F9 и Ctrl+F9 того же назначения, но еще с полезными фишками самого редактора. Так что изикод не бро.

-----
2 оттенка серого




Ранг: 23.7 (новичок), 11thx
Активность: 0.040.02
Статус: Участник

Создано: 26 июня 2018 14:18
· Личное сообщение · #29

f13nd
так залей свою сборку EmEditor, чтобы все тоже смогли заценить!




Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 26 июня 2018 15:37 · Поправил: f13nd
· Личное сообщение · #30

parfetka пишет:
так залей свою сборку EmEditor, чтобы все тоже смогли заценить!

Не знаю, ну тему выложу, все настройки наверное не налезут на другую версию, а у меня не новая.
Проще на пальцах объяснить, что Сервис-Свойства для текущей конфигурации (должен быть выбран x86 Assembler, для этого можно тупо открыть .asm), вкладки Подсветка(1), Подсветка(2) и Вид (справа от имени темы ">" и Импорт) - настройка подсветки, вкладка Клавиатура - бинды.
2 простеньких vbs-макроса регистрируются в Макросы - Настройка и биндятся на нужные кнопки.
Code:
  1. #title="Compile"
  2. #tooltip="FASM compile"
  3. 'добавить переменную окружения include=...\fasm\INCLUDE
  4. fasm_cmd = "...\fasm\fasm.exe"
  5. createobject("WSCript.shell").run "cmd /K cd "&chr(34)&document.path&chr(34)&" & "&chr(34)&fasm_cmd&chr(34)&" -m 2097152 "&chr(34)&document.fullname&chr(34)

Code:
  1. #title="CompileRun"
  2. #tooltip="FASM compileRun"
  3. set Fso = createobject("Scripting.FileSystemObject") 
  4. 'добавить переменную окружения include=...\fasm\INCLUDE
  5. fasm_cmd = "...\fasm\fasm.exe"
  6. run_cmd = fso.getbasename(document.fullname)&".exe"
  7. createobject("WSCript.shell").run "cmd /K cd "&chr(34)&document.path&chr(34)&" & "&chr(34)&fasm_cmd&chr(34)&" -m 2097152 "&chr(34)&document.fullname&chr(34)&" & "&chr(34)&run_cmd&chr(34)

Вообще тема не про емедитор, наверное не стоит тут "агрессивно навязывать" что-либо.


6fed_26.06.2018_EXELAB.rU.tgz - emeditor_fasmtheme.zip

-----
2 оттенка серого





Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 26 июня 2018 16:19
· Личное сообщение · #31

f13nd пишет:
"агрессивно навязывать"


Я сам пользуюсь емедитором уже давно, но для быстрой редакции, собрал данные по х64 и по х86, по макросам и регистрам, для макро ассемблера х64-х86, осталось всё это оформить в хороший стиль с правильной цветовой схемой, всё руки не доходят. Возможно это обсуждение послужит поводом доделать схему Идея со скриптом тоже классная, возьму на заметку

Единственное что нужно ещё сделать, это разбросать ассемблерные команды по типам, чтобы подсветка была более форматированной и набросать пару скриптов, чтобы они форматировали ассемблерный листинг.

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube



<< . 1 . 2 . 3 . >>
 eXeL@B —› Софт, инструменты —› X64 Assembler Programming - UASM - JWasm
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати