//////////////////////////////////////////////////////////////////// // Copyright (C) Alexander Telyatnikov, Ivan Keliukh, Yegor Anchishkin, SKIF Software, 1999-2013. Kiev, Ukraine // All rights reserved // This file was released under the GPLv2 on June 2015. //////////////////////////////////////////////////////////////////// /* Module Name: tools.cpp Abstract: This module contains some useful functions for data manipulation. Environment: */ /////////////////////////////////////////////////////////////////////////////// #ifdef __cplusplus extern "C" { #endif //---------------- #include "tools.h" //---------------- #ifdef _X86_ __declspec (naked) void __fastcall _MOV_DD_SWP( void* a, // ECX void* b // EDX ) { _asm { mov eax,[edx] bswap eax mov [ecx],eax ret } } __declspec (naked) void __fastcall _MOV_DW_SWP( void* a, // ECX void* b // EDX ) { _asm { mov ax,[edx] rol ax,8 mov [ecx],ax ret } } __declspec (naked) void __fastcall _REVERSE_DD( void* a // ECX ) { _asm { mov eax,[ecx] bswap eax mov [ecx],eax ret } } __declspec (naked) void __fastcall _REVERSE_DW( void* a // ECX ) { _asm { mov ax,[ecx] rol ax,8 mov [ecx],ax ret } } __declspec (naked) void __fastcall _MOV_DW2DD_SWP( void* a, // ECX void* b // EDX ) { _asm { mov ax,[edx] rol ax,8 mov [ecx+2],ax mov [ecx],0 ret } } __declspec (naked) void __fastcall _MOV_MSF( void* a, // ECX void* b // EDX ) { _asm { mov eax,[edx] mov [ecx],ax shr eax,16 mov [ecx+2],al ret } } __declspec (naked) void __fastcall _MOV_MSF_SWP( void* a, // ECX void* b // EDX ) { _asm { mov eax,[edx] mov [ecx+2],al bswap eax shr eax,8 mov [ecx],ax ret } } __declspec (naked) void __fastcall _XCHG_DD( void* a, // ECX void* b // EDX ) { _asm { mov eax,[edx] xchg eax,[ecx] mov [edx],eax ret } } #endif _X86_ #ifdef __cplusplus }; #endif