gpt4 book ai didi

assembly - 英特尔 x86-64 XSAVE/XRSTOR

转载 作者:行者123 更新时间:2023-12-04 03:43:56 25 4
gpt4 key购买 nike

我是一名用 Intel x86-64 汇编编写的 CS 学生,使用 nasm 进行编译,并在以 Ubuntu 12.04 作为客户操作系统的 Core i7 处理器上运行。有没有人有如何使用的例子XSAVEXRSTOR ?我已阅读 XSAVE 上的部分在英特尔架构软件开发人员手册中多次。我试图实现 xsave在 C++ 中,然后反汇编二进制文件以了解它在做什么。当然,我已经在互联网上搜索了示例。任何建议将非常感谢。

最佳答案

最后,回答这个问题。感谢用户:harold,他帮助我回答了这个问题。我发现的总结:

在 .data 中设置内存空间并将其对齐在 64 字节边界上。然后您可以使用具有该内存空间的命令。如果你想使用堆栈,你应该能够以类似的方式确保堆栈是 64 字节对齐的,但对于我来说,这种方式似乎更容易达到这个目的。

eax: edx 用于设置您想要保存、恢复的寄存器的标志。这个组合是 64 位,并与一个内部控制进行 AND 运算,该内部控制知道您可以保存/恢复哪些寄存器(这允许没有 ymm 的处理器忽略这些寄存器)我发现最简单的方法是将所有位设置为保存/恢复一切:

段.data

align   64
regsave times 1024 dq 0

.text 段
mov     rdx, 0xFFFFFFFFFFFFFFFF
mov rax, 0xFFFFFFFFFFFFFFFF
xsave [regsave]

vzeroall

mov rdx, 0xFFFFFFFFFFFFFFFF
mov rax, 0xFFFFFFFFFFFFFFFF
xrstor [regsave]

关于assembly - 英特尔 x86-64 XSAVE/XRSTOR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22105247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com