Итак, меня учат ассемблеру, и у нас есть задание: найти разницу во времени между чтением из памяти и чтением из кеша. Мы должны сделать это, создав 2 цикла и синхронизировав их. (один читает из основной памяти, а другой из кеша). Дело в том, что я не знаю и не могу найти ничего, что подсказывало бы мне, как читать из кеша или основной памяти =/. Не могли бы вы мне помочь? Я делаю это в MASM32. Я понимаю, как делать циклы, и хорошо понимаю язык ассемблера, но я просто не могу заставить его читать =/
Изменить:
У меня есть вопрос, я сделал это ...
mov ecx, 100 ;loop 100 times
xor eax, eax ;set eax to 0
_label:
mov eax, eax ;according to me this is read memory is that good?
dec ecx ;dec loop
jnz _label ;if still not equal to 0 goes again to _label
... это будет нормально?
Редактировать 2:
хорошо, тогда я не собираюсь подглядывать, и я ценю вашу помощь, у меня просто есть еще один вопрос, так как это две петли, которые я должен сделать. Мне нужно их как-то сравнить, я искал инструкцию по таймеру, но не нашел, нашел только: timeGetTime, GetTickCount и Счетчик производительности, но, насколько я понимаю, эти инструкции возвращают системное время, а не время, необходимое для завершения цикла. Есть ли способ сделать то, что я хочу? или мне нужно думать о другом пути?
Кроме того, можно ли читать из разных регистров во втором цикле (тот, который не читает из кеша), если я даю различные инструкции «mov»? или я тут совсем не в теме?
Извините за все эти вопросы, но еще раз спасибо за вашу помощь.