D7AVX - D7AVX + dbgAVX - 1.0
----------------------------------------
License
2023 Valentim Batista
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license.txt file containing the GNU General Public License for more details.
-------------------------------------------------------------------------------
This software is:
* d7avx - a helper (gcc frontend) for using SSE/AVX instructions with Delphi compilers not supporting SSE/AVX instructions
uses MinGW GCC/ObjectDump to compile .c to .s and .s to .o with disassembly customized for delphi inclusion in asm statements
tested only with MinGW GCC/ObjectDump
c code - is compiled with GCC as a way to study generated assembly code with various optimization levels including SSE/AVX
assembly code - is compiled, disassembled and customized for delphi inclusion as db statements (for when the instructions are unrecognized)
example of compiled, disassembled and customized assembly code for direct delphi inclusion:
db $c5,$fc,$10,$09 // vmovups ymm1,YMMWORD PTR [ecx]
db $c5,$fc,$10,$12 // vmovups ymm2,YMMWORD PTR [edx]
db $c5,$fc,$28,$d9 // vmovaps ymm3,ymm1
db $c5,$e4,$59,$da // vmulps ymm3,ymm3,ymm2
db $c5,$fd,$70,$e3,$f5 // vpshufd ymm4,ymm3,0xf5
db $c5,$e4,$5c,$dc // vsubps ymm3,ymm3,ymm4
db $c5,$e4,$54,$dd // vandps ymm3,ymm3,ymm5
db $c5,$fd,$70,$d2,$b1 // vpshufd ymm2,ymm2,0xb1
db $c5,$ec,$59,$d1 // vmulps ymm2,ymm2,ymm1
db $c5,$fd,$70,$e2,$a0 // vpshufd ymm4,ymm2,0xa0
db $c5,$dc,$58,$e2 // vaddps ymm4,ymm4,ymm2
db $c5,$dc,$54,$e6 // vandps ymm4,ymm4,ymm6
db $c5,$dc,$56,$e3 // vorps ymm4,ymm4,ymm3
db $c5,$fc,$11,$20 // vmovups YMMWORD PTR [eax],ymm4
the included .ini file holds the paths and commands used with gcc and objdump
[configuration]
gccfolder=C:\MinGW\bin
gccscmd=""%s\gcc.exe" -masm=intel %s -S "%s" -o "%s""
gccccmd=""%s\gcc.exe" -m32 -c "%s" -o "%s""
objdumpfolder=C:\MinGW\bin
objdumpcmd=""%s\objdump.exe" -M intel -d "%s""
* dbgavx - a helper for debugging XMM/YMM registers content with debuggers not supporting XMM/YMM registers
used with any debugger for XMM/YMM and also MM/ST and general registers content inspection
when the main debugger is on a breakpoint a thread in the debugee process can be suspended and a context extracted containing the register state for inspection
-------------------------------------------------------------------------------
Requirements:
- windows 7 to 11 (32 or 64 bits)
-------------------------------------------------------------------------------
Updates:
https://sourceforge.net/projects/d7avx/
-------------------------------------------------------------------------------