x86-64 相关问题

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

strlen从C到汇编,处理器为什么要做这些步骤?

我在研究这个C函数的汇编代码: int stringlen(char *s1, char *s2) { 整数结果= 0; 诠释我= 0; 而 (s1[i] != 0) { 结果++; 我++; } 内...

回答 2 投票 0

多线程固定大小矩阵向量乘法针对具有非均匀缓存的多核 CPU 进行了优化

我想为固定大小的矩阵(~3500x3500 浮点数)实现并行矩阵向量乘法,该矩阵针对我的 CPU 和缓存布局(AMD Zen 2/4)进行了优化,并为 ch 重复执行...

回答 1 投票 0

0x8($rsp)的含义

我第一次学习汇编语言。这是 (gdb) 反汇编的一部分: 移动 $0x131,%eax cmp 0x8(%rsp),%eax //这里的问题,0x8(%rsp)的值是多少? (gdb)i r rax 0x131...

回答 2 投票 0

x86-64 程序集:GCC 出现分段错误,但 ld [重复] 不会出现分段错误

我正在使用 nasm 进行 x86-64 汇编。我的任务是编写一个代码,接受一个数字作为命令行参数并将其转换为整数。使用 ld linke 链接时代码正常工作...

回答 0 投票 0

那是哪个 CPU 错误?通常用不相关的地址`Attempt to execute non-executable address`

一个非常常见的 Windows 用户模式应用程序以各种不可能的方式崩溃,例如: 尝试从明确有效的 RSP 的地址读取/写入: 尝试从地址 ffffffffffffffff 读取

回答 0 投票 0

NASM 紧随其后附加到带有内存的字符串

对于上下文,我在 64 位 Debian 发行版上使用 NASM。 我仍在学习 Assembly 作为编写我自己的编程语言的一部分,但我最近遇到了一个我不确定如何处理的问题。

回答 0 投票 0

C++ [[noreturn]] 函数调用和析构函数

我有一些 C++ 代码,我必须确保在退出之前调用特定的析构函数,我想知道它是否在 [[noreturn]] 函数之前被调用。 所以我写了这个模拟...

回答 0 投票 0

如何读取 uiCA 的输出?

我在uiCA中分析了一段汇编代码(https://bit ly/3lKtPYY <- uiCA can only share with bit ly but the link is blocked :( Throughput (in cycles per iteration): 5.25 Bottleneck: Issu...

回答 0 投票 0

在 ARM 架构上使用 objdump:反汇编到 INTEL arch

我有一个目标文件,正在尝试反汇编它。当我使用时: objdump -d example.o 我得到了一个文件格式为 elf64-littleaarch64 的程序集。 我正在尝试将其拆解为 INTEL

回答 0 投票 0

如何让 CMake 编译纯程序集静态和共享库?

这是图书馆。 图书馆.asm: 节.text 全局 return_number 返回编号: 移动 eax, 10 退役 我可以使用命令行轻松创建共享和静态库: nasm -f elf64 -o libr...

回答 1 投票 0

在内存位置上调用 "add "是否比在寄存器上调用它然后移动值要快?

什么更快:add DWORD PTR [rbp-0x4],1 还是 mov eax,DWORD PTR [rbp-0x4] add eax,1 mov DWORD PTR [rbp-0x4],eax 我看到了编译器生成的第二段代码,所以可能调用add on ...

回答 2 投票 0

64位x86中MOVZX r32、rm16与MOVZX r64、rm16的区别。

MOVZX r32,rm16和MOVZX r64,rm16的操作码都是0F B7,但后者的前缀是REX.W。这两条指令有什么不同?难道他们两个都不应该将32位的上位数清零吗?

回答 1 投票 1

二元弹实验阶段6。节点值包含重复?

0x0000000000401161 : push %r14 0x0000000000401163 : push %r13 0x0000000000401165 : push %r12 0x0000000000401167 : push %rbp ... ...

回答 1 投票 2

在做除法乘法时,多走一步是不是会快一些?

考虑这个函数:unsigned long f(unsigned long x) { return x 7; }。使用-O3,Clang将除法变成了乘法,正如预期的那样:f: # @f ...

回答 1 投票 3

在线组装中的子数组。C++

void new2d(int* aInit, int* aResult) { int cyclic[34] = {0}; for (int i = 0; i < 32; i++) { cyclic[i] = aInit[i]; } cyclic[32] = aInit[0]; ...。

回答 1 投票 0

错过了uop-cache的粒度

Intel优化手册B.5.7.3 Decoded ICache中没有部分命中。如果在32字节的分块上缺少任何属于该查找的微操作,则会发生Decoded ICache miss,在 ...

回答 1 投票 0

汇编可执行文件不显示任何内容(x64)

非常简单的汇编介绍代码。似乎通过gcc -o prog1 prog1.s编译ok,然后.prog1只是跳过一行,什么都不显示,就像在等待一个代码没有问的输入。有什么问题吗?...

回答 1 投票 2

优化线性序列的总和=n * (n+1)2 - 有什么比lea imul shrd更快的吗?

这是我的汇编代码用于计算的总RAX = 1 + 2 + 3 + ......。+ rdi使用高斯方法rax =(rdi + 1)*rdi 2.你们有什么想法或知道英特尔指令,进一步......

回答 1 投票 0

为什么accept()会返回ERESTARTSYS?

我试图按照同样的C语言写法建立一个TCP绑定shellcode。下面是asm: global _start section .text _start:; socket() call xor rax,rax add rax,41 xor ....

回答 1 投票 0

在x86-64中,当我们要推送堆栈上的东西时,是否总是要做pushq?

因为在x86-64中,16个寄存器都可以是8个字节,在函数调用开始时,当函数(callee)要推送它要使用的callee保存的寄存器(%rbx、%rbp和%r12-15)时,它......。

回答 1 投票 0

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