x86-64 相关问题

x86-64是Intel x86架构的64位扩展

如何为 Go 构建 8g 和 6g Go 编译器

我正在编写的软件将在 x86 和 x86-64 架构上的 Windows、Mac 和 Linux 系统中广泛部署。 每当我在 Mac 和 Linux 系统上设置 go 编译器时,我...

回答 2 投票 0

Multiboot2 遍历发现无效标签

在实现使用 GRUB2 启动的 multiboot2 投诉操作系统时,阅读提供的标签,我收到的 type = 25 以及我对 type = 6 的信息请求被忽略。 不完全是...

回答 1 投票 0

为什么 GCC 不能为两个 int32 的结构生成最佳运算符 == ?

一位同事向我展示了我认为没有必要的代码,但果然是这样。我希望大多数编译器会将所有这三种相等测试尝试视为等效: #包括...

回答 3 投票 0

如何在Linux和x86上重新映射PCIe Bar地址以及配置空间如何分配MMIO?

我对 x86 上的 Linux 中的 PCIe 子系统的详细工作原理存有疑问。 据我所知,要仅使用 mmio 与 PCIe 设备通信,需要执行以下操作: PCIe 配置空间...

回答 1 投票 0

设置 IDT 然后启用 STI 后出现一般保护故障 [已解决]

我是操作系统开发新手,想为我的爱好操作系统添加 IDT。启用 STI 后,我立即收到 GPF。现在我的 ISR 确实正确接收中断,但我不知道问题是什么。我有一个 6...

回答 1 投票 0

设置 IDT 然后启用 STI 后出现一般保护故障

我是操作系统开发新手,想将 IDT 添加到我的爱好操作系统中。启用 STI 后,我立即收到 GPF。现在我的 ISR 确实正确接收中断,但我不知道问题出在哪里。我有一个 6...

回答 1 投票 0

为什么在GDB中将eax设置为1后,rax是0xffffffff00000001而不是0x0000000000000001?

我正在 x86-64 系统上使用 GDB 调试 GAS 汇编程序。当我将rax寄存器设置为-1,然后将eax设置为1时,rax的值变为0xffffffff00000001,但我期望它是

回答 1 投票 0

减法在汇编中产生负数 - 十六进制值是多少?

我对汇编非常陌生,所以我不知道这是否是一个愚蠢的问题,但我有一个问题,要求我阅读以下汇编行并说出 %rdi 中存储的值之后...

回答 1 投票 0

x86-64 自动边界检查机制

用户模式 x64 中是否有任何方案可以让硬件自动对每个内存加载和存储应用边界检查,而无需编译器的显式检测?我也不想...

回答 1 投票 0

并行执行一段x64代码

考虑以下由 clang 生成的 x64 代码: mov rax, qword ptr [rsi] ; 1 mov rdx, qword ptr [rip + hash_mult] ; 1 imul rdx,qword pt...

回答 1 投票 0

x86-64 上的 C++:结构/类何时在寄存器中传递和返回?

假设 Linux 上的 x86-64 ABI,在 C++ 中的什么条件下,结构体会传递给寄存器中的函数,还是传递给堆栈上的函数?在什么条件下它们会返回到寄存器中?答案是吗

回答 2 投票 0

编写汇编程序:处理 x64 REX 和 VEX 编码的干净高效的方法?

我正在开发一个 x64 汇编器(只有 64 位,至少现在是这样),而且我已经取得了相当大的进展(我支持几乎所有指令,包括大多数扩展),但我有一些相当...

回答 1 投票 0

检查dockerfile中的架构以获取amd/arm

我们正在使用 Windows 和 Mac M1 机器使用 Docker 进行本地开发,并且需要在我们的 docker 环境中获取并安装 .deb 包。 该软件包需要 amd64/arm64,具体取决于...

回答 2 投票 0

x86-64 上可以使用 64 位直接内存操作数吗?

我想知道是否可以对如下指令进行编码: 添加 rax,[地址] 其中 是指向 64 位值的完整 64 位地址。 NASM 似乎只是截断了地址... 我想知道是否可以对如下指令进行编码: 添加rax,[地址] 其中 是指向 64 位值的完整 64 位地址。 NASM 似乎只是截断地址并将其编码为 32 位地址。唯一有效的 64 位寻址(使用直接地址)形式是: mov rax,[qword 地址] 由 NASM 使用 REX.W=1 和 MOV 的特殊操作码进行直接寻址编码。将 REX.W 与 add 指令一起使用只会使其将目标地址解释为包含 64 位值,但不允许指定 64 位地址。但我很好奇是否还有其他方法。 (顺便说一句,由于这个问题,我现在使用 RIP 相对寻址)。 谁能确认直接 64 位寻址形式是不可能的? 除某些特殊情况外,amd64架构没有64位位移的寻址模式。相反,使用 rip 相对寻址,如果您的二进制文件大小小于 2 GB,这应该没问题。 请记住,64 位模式是 AMD 的天才之作。 1980 年,英特尔团队坚持认为 INC REG16(2 字节指令)太长,并浪费了 256 个首页操作码中的 16 个来用 1 字节创建别名。 AMD 将其重新用作具有 4 位可用的前缀,在编译器愿意节省一个字节的极少数情况下浪费了一个字节。 对于 64 位操作,第一位表示 1。 剩下的三位用于指定是否是 32 位或 64 位寄存器 故意的。幸运的是,sib 中最复杂的指令有一个主寄存器、一个指针和一个索引,总共三个。 这些被用作开关,因此简单而友善。 在所有其他方面,i386/pentium 指令集均未更改。 所以这回答了你的问题,没有偏离 32 位,没有 64 位地址。批准的答案解释了如何在需要 64 位值的情况下解释 32 位常量。

回答 2 投票 0

为什么像 BOUND 或 PUSHA 这样的 x86 传统指令在 64 位模式下不可用?

某些旧版 x86 指令(BOUND、PUSHA、AAA 等)无法在 64 位模式下使用是否有原因?是的,我知道,此类说明仅适用于兼容性问题,并且应该......

回答 1 投票 0

是否值得费心对齐 AVX-256 内存存储?

根据英特尔® 64 和 IA-32 架构优化参考手册,B.4 节(“英特尔® 微架构代号 Sandy Bridge 的性能调优技术”),亚秒...

回答 1 投票 0

为什么该程序的 32 位和 64 位编译版本以这种方式填充内存?

我试图更好地理解堆栈和堆的工作原理。 在比较同一程序的 32 位和 64 位编译版本时,我遇到了一个障碍。 在这两种情况下,我都使用了嘉宾 Fedor...

回答 1 投票 0

为什么我会收到“** stack crashing detector **”错误?

我正在尝试将此汇编函数与此 C++ 代码链接: 。文本 .global _Z7scambiaRiS_ _Z7scambiaRiS_: 推q%rbp 移动%rsp,%rbp 移动 (%rdi), %rax 移动 (%rsi), %rcx 移动%...

回答 1 投票 0

位移后,汇编没有返回我想要的内容

免责声明:我是初学者,这是我见过的最糟糕的语言 目标是解码消息。 每个字符由 8 个字节编码 7-8字节无关紧要,假设0 3-6字节索引 第二

回答 1 投票 0

如何在x86-64汇编中使用execve

我正在 Hack The Box Academy 上学习“汇编语言简介”模块,目前在“Shellcoding 工具”部分遇到问题。提示是:'上面的服务器模拟了一个

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.