+.globl _UlongByteSwap + +.intel_syntax noprefix + +/* FUNCTIONS ***************************************************************/ + +_UlongByteSwap: + push ebp // save base + mov ebp,esp // move stack to base + mov eax,[ebp+8] // load the ULONG + bswap eax // swap the ULONG + pop ebp // restore the base + retthis should work: _UlongByteSwap: mov eax,[esp+8] // load the ULONG bswap eax // swap the ULONG ret
+.globl _UlonglongByteSwap + +.intel_syntax noprefix + +/* FUNCTIONS ***************************************************************/ + +_UlonglongByteSwap: + push ebp // save base + mov ebp,esp // move stack to base + mov edx,[ebp+8] // load the higher part of ULONGLONG + mov eax,[ebp+12] // load the lower part of ULONGLONG + bswap edx // swap the higher part + bswap eax // swap the lower part + pop ebp // restore the base + ret_UlonglongByteSwap: mov edx,[esp+8] // load the higher part of ULONGLONG mov eax,[esp+12] // load the lower part of ULONGLONG bswap edx // swap the higher part bswap eax // swap the lower part ret
+_UshortByteSwap: + push ebp // save base + mov ebp,esp // move stack to base + mov eax,[ebp+8] // load the USHORT + bswap eax // swap the USHORT, xchg is slow so we use bswap with rol + rol eax,16 // make it USHORT + pop ebp // restore the base + ret_UshortByteSwap: mov eax,[esp+8] // load the USHORT bswap eax // swap the USHORT, xchg is slow so we use bswap with rol rol eax,16 // make it USHORT ret or to save a byte... _UshortByteSwap: mov ebx,[esp+8] // load the USHORT mov al, bh mov ah, bl ret