- Mình đang viết code cộng trừ nhân chia các số float 128bit.
- Mình dùng tập lệnh SSE của CPU để thực hiện các phép tính này. Tính toán thì chạy rồi nhưng còn 1 vài vấn đề:

-> Hiện các số 128bit đều phải khai báo luôn trong code thông qua 1 struct
vd:
Code:
struct NUM128BIT
{
float x,y,z,t;
};
void main()
{
NUM128BIT num128bit1;
num128bit1.x = 0x00000000;
num128bit1.y = 0x00000000;
num128bit1.z = 0xFFFFFFFF;
num128bit1.t = 0xFFFFFFFF;

NUM128BIT num128bit2;
num128bit2.x = 0x00000000;
num128bit2.y = 0xFFFFFFFF;
num128bit2.z = 0x00000000;
num128bit2.t = 0x00000000;

NUM128BIT *a,*b;
NUM128BIT results;
a=&num128bit1;
b=&num128bit2;
__asm
{
mov eax,a
mov ebx,b
movups xmm0,[eax]
movups xmm1.[ebx]
addps xmm0,xmm1
movups results,xmm0
}
}
chứ em không biết cách nào để nhập từ bàn phím trực tiếp vào thanh ghi xmm0 cả.
- Nếu em cho xuất results ra dạng từng packet 32bit thì thấy code đã chạy đúng nhưng không biết cách xuất thành 1 dãy luôn ạ.
- Nếu xuất theo từng packet 32bit (xuất dạng unsigned) thì nó xuất ra là : "0 4294967295 4294967295 4294967295".

- Còn phần nhập số từ bàn phím vào cũng bí, chưa tìm được cách nào để nhập trực tiếp vào thanh ghi cả. Toàn phải nhập theo từng packet 32bit rồi move nguyên 1 struct vào.

Thân,
Ming giúp ạ.
Cảm ơn nhiều ạ.