我意识到通常最好不要手动将预取数据指定到CPU缓存中。但是,我只是想编写这段代码进行实验,并确保我可以使用它:
global start
section .data
msg: db 'hello',0 ; C-style null terminated char array
section .text
start:
lea rax, [msg] ; rax = address of 'hello'
prefetch0 rax ; fetch data [rax] into cache
ret ; return
我使用NASM编译,但在prefetch0 rax
收到错误说明:
unable to parse: instruction expected.
查看论坛,似乎这个错误有时可能是由不正确的标签或部分声明造成的,但我相信我的是有序的,而且错误仅适用于该特定指令。
为了彻底,即使我怀疑它没有什么区别,我尝试了每个预取指令,即prefetch1
,prefetchnta
等。“nta”版本实际上印刷了不同的错误的操作数/指令组合错误。
答案 0 :(得分:1)
您正在寻找的指令是PREFETCHT0(编号前有'T')。您还必须在方括号中提供地址。