سلام دوستان. من دو برنامه داشتم که تحلیلشو بلد نیستم. برنامه شماره 1 با دستورات sse نوشته شده و برنامه شماره 2 برنامه ای هست که روی یک هسته ی خاص اجرا میشه.
کسی میتونه برنامه رو برام تحلیل کنه اگر خط به خط باشه که ممنون میشم چون خودم اینقدر اکسپرت نیستم که این برنامه ها رو بفهمم. با تشکر
برنامه 1
#include <emmintrin.h>
#include <stdio.h>
#include <conio.h>
typedef union {
__m128i V;
int A[4];
} IV;
static void printIV(IV *Q) {
printf("%08x %08x %08x %08x\n", Q->A[0], Q->A[1], Q->A[2], Q->A[3]);
}
int main() {
__m128i allones = _mm_set1_epi32(0);
__m128i zeroones, onezeros;
allones = _mm_cmpeq_epi32(allones, allones);
zeroones = _mm_srli_epi16(allones, 8);
printIV((IV*)&zeroones);
onezeros = _mm_slli_epi16(allones, 8);
printIV((IV*)&onezeros);
-getch();
return 0;
}
برنامه 2
#include <Windows.h>
#include <iostream>
#include <conio.h>
using namespace std;
int main() {
HANDLE process = GetCurrentProcess();
DWORD_PTR processAffinityMask;
DWORD_PTR systemAffinityMask;
if (!GetProcessAffinityMask(process, &processAffinityMask, &systemAffinityMask))
return -1;
int core = 2; /* set this to the core you want your process to run on */
DWORD_PTR mask = 0x1;
for (int bit = 0, currentCore = 1; bit < 16; bit++)
{
if (mask & processAffinityMask)
{
if (currentCore != core)
{
processAffinityMask &= ~mask;
}
currentCore++;
}
mask = mask << 1;
}
BOOL success = SetProcessAffinityMask(process, processAffinityMask);
cout << success << endl;
getch();
return 0;
}