3
我一直在使用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以自然順序顯示寄存器 - 請參閱上面的回答編輯。 –