x86-64是Intel x86架构的64位扩展
假设我有一个这样声明的缓冲区: .bss 节 .lcomm 缓冲区,33 我将它压入堆栈,并将其作为参数传递给另一个需要 44 字节长度缓冲区的函数。 难道是……
我有业余爱好操作系统,我希望它跳转到 64 位长模式,在远跳转到 64 位长模式条目之前一切正常,分页工作正常,但 QEMU 日志文件显示 EFER 值是 LMA 三重...
例如,如何为这个系统调用sys_wait4准备参数: asmlinkage long sys_wait4(pid_t pid,unsigned int __user *stat_addr, int options, struct rusage __user *ru) 1120 { 如何应对
@GOTPCREL(%rip) 是什么意思? 我遇到过这行 mov var@GOTPCREL(%rip), %rax 并且对奇怪的语法有点困惑。 有人可以推荐相关的吗...
不久前,我在编译器类中学习了闭包转换,并且想知道调用闭包与调用函数会产生多少性能开销。 考虑一个函数
我对 REX 前缀感到困惑: 文档说 REX 的定义是: REX 位: |7|6|5|4|3|2|1|0| |0|1|0|0|W|R|X|B| W 位 = 操作数大小 1==64 位,0== 旧版,取决于操作码。 R 位 = 外部...
不久前,我在编译器类中学习了闭包转换,并且想知道调用闭包与调用函数会产生多少性能开销。 考虑一个函数
我正在尝试研究通过汇编中的堆栈将参数传递到函数中。我使用的是 Fedora 20,一个 64 位系统。 当我尝试以下代码时: 推入%ebp 人口%ebp 我收到错误: 错误:我...
如何从 asm 列表中确定使用哪个 x86 内存操作数宽度和类型?
同一指令有多个版本:IDIV M32、IDIV R32、IDIV M64、IDIV R64 (https://www.felixcloutier.com/x86/idiv) 如何了解使用的是哪一个?比方说 vdiv(std::向量&l...
我正在读一本描述历史观点的书: Pentium 4E(2004 年,125 M 晶体管)。添加了超线程,这是一种在单个处理器上同时运行两个程序的方法......
我正在从 ctypes 调用 NASM 64 位 DLL。该 dll 有五个输入参数。在 Windows 调用约定中,前四个在 rcx、rdx、r8 和 r9 中传递,第五个在
我尝试从 C++ 调用 ASM 函数,但收到错误“未解析的外部符号引用” 我的 C++ 代码: 外部无效 foo(); int main() { foo(); 返回0; } 我的汇编代码: .t 节...
为什么 GCC 和 Clang 会在两个分支上弹出而不是只弹出一次?
GCC 和 Clang 都可以编译 布尔预测(); 无效 f(); 无效 g(); 无效 h() { 如果(预测()){ F(); } 别的 { G(); } } 到一些变化 # Clang -Os 输出。 -O3是一样的 哈...
你能告诉我如何使这段代码能够看到C:驱动器并正常工作吗? 包括 \masm64\include64\masm64rt.inc 。数据 BS 设备 128 Fname BYTE "C:\",0 ; ms1 db“可用空间...
我正在编写一个机器代码程序,用于在 64 位 Linux 中将字符串打印到终端。这是我的代码: 00000000: 7f45 4c46 0201 0103 0000 0000 0000 0000 .ELF............ 00000010: 0200 3e00 0100 0...
记住 x86-64 System V arg 寄存器顺序的最佳方法是什么?
我经常忘记系统调用中每个参数需要使用的寄存器,每次我忘记时我都会访问这个问题。 整数/指针参数到 x86_64 用户空间函数的正确顺序...
我正在为 x86_64 编写一个 JIT 重新编译器,有时发出的代码需要从编译的二进制文件中调用函数。 由于 ASLR,我的程序的 .text 段被放置在某个随机地址...
我现在正在学习汇编,我有一个很大的问题需要解决。 (顺便说一句,我使用 x86_64 nasm 程序集) 到目前为止,我已经做到了这一点 .bss 节 结果:resb 10 .data 节 num1: 数据库'22' ...
我使用Linux构建了一个多平台Docker镜像,并通过piprequirements.xt文件安装了numpy。镜像构建良好,容器在 Windows/Linux 上运行良好,但在 M1 mac 上运行时
CPUID:为什么某些功能必须将 MISC_ENABLE.LCMV 设置为 0?可以暂时覆盖吗?
我正在尝试使用CPUID,但有一些附加条件。根据 sandpile.org 的 CPUID 页面,CPUID 标准函数 0000_0004h 及以上仅在设置 MISC_ENABLE.LCMV 标志时才起作用...