저는 GDB를 하루 동안 사용 해왔다. 그러나 GDB와 인쇄 레지스터를 사용하여 마지막 세미콜론에 중단 점을 설정하면 XMM 레지스터에 저장된 데이터의 의미를 완전히 해석 할 수 없습니다.GDB 레지스터 해석 (SSE 레지스터)
데이터가 (MSB> LSB) 형식인지 또는 그 반대인지 알 수 없습니다.
__m128i S = _mm_load_si128((__m128i*)Array16Bytes);
}
그래서 내가 얻은 결과입니다.
(gdb) print $xmm0
$1 = {
v4_float = {1.2593182e-07, -4.1251766e-18, -5.43431603e-31, -2.73406277e-14},
v2_double = {4.6236050467459811e-58, -3.7422963639201271e-245},
v16_int8 = {52, 7, 55, -32, -94, -104, 49, 49, -115, 48, 90, -120, -88, -10, 67, 50},
v8_int16 = {13319, 14304, -23912, 12593, -29392, 23176, -22282, 17202},
v4_int32 = {872888288, -1567084239, -1926210936, -1460255950},
v2_int64 = {3749026652749312305, -8273012972482837710},
uint128 = 0x340737e0a29831318d305a88a8f64332
}
그래서 누군가 데이터를 해석하는 방법을 안내해 주셨습니다.
그래서 내장 함수 _mm_load_si128을 사용하여 배열을로드하고 있습니다. 배열의 최상위 바이트가 레지스터에 최하위 바이트가되는지 확인하십시오. – Nocturnal
일반적으로 걱정할 필요는 없지만 일반적인 x86 리틀 엔디안 규칙이 적용되므로 16 바이트로드의 LS 바이트는 16 바이트 레지스터의 LS 바이트에 있습니다. gdb는 자연 순서대로 레지스터를 표시합니다. 위의 편집을 참조하십시오. –