您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

禁止在x86 / x86_64上进行未对齐的内存访问

禁止在x86 / x86_64上进行未对齐的内存访问

这很棘手,我还没有亲自完成,但是我认为您可以通过以下方式做到:

x86_64 cpu(特别是我已经检查过Intel Corei7,但我猜还有其他cpu)具有性能计数器MISALIGN_MEM_REF,用于计数器未对齐的内存引用。

因此,首先,您可以在Linux下运行程序并使用“ perf”工具来获取您的代码已完成的未对齐访问次数的计数。

一个更加棘手和有趣的技巧是编写一个内核模块,该模块对性能计数器进行编程,以在溢出时生成中断,并使它在第一个未对齐的加载/存储中溢出。在内核模块中响应此中断,但向进程发送信号。

实际上,这会将x86_64变成@R_301_2431@未对齐访问的内核。

不过,这不会很简单-除了代码之外,系统库还使用未对齐的访问,因此将它们与您自己的代码分开将非常棘手。

其他 2022/1/1 18:16:18 有568人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶