这很棘手,我还没有亲自完成,但是我认为您可以通过以下方式做到:
x86_64 CPU(特别是我已经检查过Intel
Corei7,但我猜还有其他CPU)具有性能计数器MISALIGN_MEM_REF,用于计数器未对齐的内存引用。
因此,首先,您可以在Linux下运行程序并使用“ perf”工具来获取您的代码已完成的未对齐访问次数的计数。
一个更加棘手和有趣的技巧是编写一个内核模块,该模块对性能计数器进行编程,以在溢出时生成中断,并使它在第一个未对齐的加载/存储中溢出。在内核模块中响应此中断,但向进程发送信号。
实际上,这会将x86_64变成不支持未对齐访问的内核。
不过,这不会很简单-除了代码之外,系统库还使用未对齐的访问,因此将它们与您自己的代码分开将非常棘手。



