Haruspex
/həˈrʌspeks/
A religious official in ancient Rome who predicted the future or interpreted the meaning of events by examining the insides of birds or animals that had been sacrificed.
Exploration of x86-64 ISA using speculative execution.
Haruspex is a project attempting to explore and audit the x86-64 instruction set by (ab)using speculative execution and certain low-level performance counters Intel CPUs provide mainly for the identification of undocumented opcodes and deducing the pipeline properties of each instruction. You can find the article explaining the methodology here.
/analysis
contains the Node.js server responsible for reducing the dataset and serving it as an interactive table, which you can find live at haruspex.can.ac ./kernel
contains the code responsible for producing this data, note that it is essentially "pseudo-code" due to some of the dependencies and parts of the toolchain I used to build it I cannot share, but should be pretty easy to translate it to work in your OS./raw-data
contains the raw data from certain processors.
Thanks to
- @JustasMasiulis for helping with the web components.
- @H4vC for the name.
License
Haruspex is licensed under the GNU General Public License v3.