Я делаю эксперимент, который записывает индекс цикла в регистр ЦП R11, затем создает его с помощью gcc -ffixed-r11
, пытаясь сообщить компилятору, что он не использует этот регистр, и, наконец, используя perf для его измерения.
Но когда я проверяю отчет (используя perf script
), значение R11 для большинства записей записи не то, что я ожидал, это должна быть последовательность чисел, например 1..2..3 или 1..4..7 и т. д. Но на самом деле это всего лишь несколько фиксированных значений. (возможно, на это повлияла перезапись системного вызова?)
Как я могу позволить perf записывать значение, которое я установил в регистр в моей программе? Или я должен перекомпилировать все ядро с -ffixed-r11
для достижения?
Всем спасибо.