NASM: невозможно собрать инструкцию prefetch0

Я понимаю, что часто лучше не указывать данные предварительной выборки вручную в кеши ЦП. Однако я просто хотел написать этот код для эксперимента и убедиться, что смогу его использовать:

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' фактически печатала другую ошибку неправильной комбинации операнда/инструкции.


person user45389    schedule 04.08.2014    source источник


Ответы (1)


Инструкция, которую вы ищете, это PREFETCHT0 (перед номером стоит буква «T»). Вы также должны указать адрес в квадратных скобках.

person Mika Lammi    schedule 04.08.2014