Không theo mặc định! Nhưng một số hướng dẫn SSE dưới sự hỗ trợ x86 64bit và 128bit tải nguyên tử/cửa hàng, tất nhiên trước tiên bạn phải đảm bảo bộ nhớ. Xem ví dụ:
procedure Move64(var Source, Destination);
//Move 8 bytes atomicly from Source 8-byte aligned to Destination!
asm
movq xmm0, qword [Source]
movq qword [Destination], xmm0
end;
procedure Move64(newData: pointer; newReference: cardinal; var Destination); overload;
//Move 8 bytes atomically into 8-byte Destination!
asm
movd xmm0, eax
movd xmm1, edx
punpckldq xmm0, xmm1
movq qword [Destination], xmm0
end;
procedure Move128(var Source, Destination);
//Move 16 bytes atomicly from Source to 16-byte aligned to Destination!
asm
movdqa xmm0, dqword [Source]
movdqa dqword [Destination], xmm0
end;
Nguồn
2010-06-26 09:54:51
Tôi không hiểu cách hệ điều hành có thể ngăn ứng dụng sử dụng truy cập 64 bit. Đây có phải là một cái gì đó cụ thể cho kiến trúc x86? Liệu nó có một số "chế độ 32bit" cụ thể bị ép buộc bởi hệ điều hành? Ít nhất là DSP series 64x của TI tôi hiện đang làm việc với không có những hạn chế như vậy. – PauliL
Hệ điều hành chỉ có thể phát hành mã microcode ở độ rộng bit riêng của nó và không thể thực hiện ánh xạ bộ nhớ ảo với không gian địa chỉ lớn hơn. Nó không thể cho một hệ điều hành máy tính để bàn 32bit để chạy một chương trình 64bit. Khi CPU x64 phát hiện một hệ điều hành 32 bit, nó chạy trong một chế độ mô phỏng quá, mà sẽ hành động như nó là 32bit. – Puppy
DeadMG: Theo tôi hiểu, việc bật chế độ dài không có nghĩa là hướng dẫn phải 64 bit tính từ thời điểm đó trở đi. Ví dụ: http://wiki.osdev.org/Long_Mode#How_do_I_enable_Long_Mode_.3F Tôi đoán đó là một phần của cách 32 bit Mac OS X quản lý để giữ hạt nhân 32 bit trong khi có khả năng chạy các ứng dụng 64 bit. Tôi đoán CPU không phát hiện được hệ điều hành - chúng phải được thiết lập rõ ràng để vào một chế độ cụ thể. –