plenderj
Feb 13th, 2001, 06:46 AM
Hi there,
I have no experience in assembly...asm... or whatever.
But could you tell me what the following lines do :
for (i = 0; i < filesize; i += 32, j++) {
fread(&RomMemory[i], 32, 1, romfp);
_asm {
mov edx, dword ptr RomMemory
add edx, i
movq mm0, qword ptr [edx]
movq mm2, qword ptr [edx+8]
movq mm4, qword ptr [edx+16]
movq mm6, qword ptr [edx+24]
movq mm1, mm0
psrlw mm0, 8
psllw mm1, 8
por mm0, mm1
movq mm3, mm2
psrlw mm2, 8
psllw mm3, 8
por mm2, mm3
movq mm5, mm4
psrlw mm4, 8
psllw mm5, 8
por mm4, mm5
movq mm7, mm6
psrlw mm6, 8
psllw mm7, 8
por mm6, mm7
movq qword ptr [edx], mm0
movq qword ptr [edx+8], mm2
movq qword ptr [edx+16], mm4
movq qword ptr [edx+24], mm6
}
Im guessing they're swapping each two characters in a file or something, but im not quite sure.
Any ideas ?
- Jamie
I have no experience in assembly...asm... or whatever.
But could you tell me what the following lines do :
for (i = 0; i < filesize; i += 32, j++) {
fread(&RomMemory[i], 32, 1, romfp);
_asm {
mov edx, dword ptr RomMemory
add edx, i
movq mm0, qword ptr [edx]
movq mm2, qword ptr [edx+8]
movq mm4, qword ptr [edx+16]
movq mm6, qword ptr [edx+24]
movq mm1, mm0
psrlw mm0, 8
psllw mm1, 8
por mm0, mm1
movq mm3, mm2
psrlw mm2, 8
psllw mm3, 8
por mm2, mm3
movq mm5, mm4
psrlw mm4, 8
psllw mm5, 8
por mm4, mm5
movq mm7, mm6
psrlw mm6, 8
psllw mm7, 8
por mm6, mm7
movq qword ptr [edx], mm0
movq qword ptr [edx+8], mm2
movq qword ptr [edx+16], mm4
movq qword ptr [edx+24], mm6
}
Im guessing they're swapping each two characters in a file or something, but im not quite sure.
Any ideas ?
- Jamie