Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
由于 PIC,无法从程序集中的 x86-64 对象链接共享库
我正在将共享库从 32 位移植到 64 位 它由一些导出多个过程的程序集 为 NASM 编写 和一些高级 C 粘合代码组成 我正在使用 NASM 2 10 01 和 GNU ld 2 22 的 64 位 Debian 机器上进行构建 解决了
Linker
64bit
x8664
nasm
ld
NASM 我应该在调用函数后弹出函数参数吗?
假设我有一个像这样的 nasm 函数 inc mov rax rsp 8 add rax BYTE 1 ret 我这样调用这个函数 push some var call inc 我想通过堆栈将参数传递给函数 所以我推送some var然后调
Assembly
x8664
nasm
callstack
callingconvention
如何设置 dr7 寄存器的值以便在 x86-64 上创建硬件断点?
我正在开发一个允许使用的 绑定 库ptrace 在 OCaml 语言中 但我的问题仅涉及ptrace 所以 现在 我正在尝试编写一小段代码 以便使用以下命令在 Linux x86 64 上创建一个简单的硬件断点ptrace define D
c
Linux
x8664
breakpoints
ptrace
i386 和 x86-64 上的 UNIX 和 Linux 系统调用(和用户空间函数)的调用约定是什么
以下链接解释了 UNIX BSD 风格 和 Linux 的 x86 32 系统调用约定 http www int80h org bsdasm system calls http www freebsd org doc en books de
Linux
Assembly
x8664
callingconvention
ABI
从 64 位汇编调用 C 函数
在 ubuntu 16 04 上 cat hola asm extern puts global main section text main mov rdi message call puts ret message db Hola 0
gcc
Assembly
nasm
x8664
dynamiclinking
转储 x86 CPU 的 TLB 缓冲区内容
是否可以从 TLB 翻译后备缓冲区 这是 CPU 中的特殊缓存 获取翻译列表 从虚拟页到物理页 我的意思是现代 x86 或 x86 64 我想以编程方式完成此操作 而不是使用 JTAG 并将所有 TLB 条目移出 Linux内核没有这样的转
memorymanagement
x86
x8664
TLB
MMU
使用 mac os x 在 64 位处理器上运行 32 位程序集
我在运行 os x 10 9 5 的 64 位 Mac 上运行 32 位程序集时遇到问题 我还安装了 NASM 2 11 08 我目前正在阅读 Jeff Duntemann 的 一步一步汇编语言 在书中 他详细说明了 Linux 操作系统上
MacOS
Assembly
64bit
x8664
32bit
x86、x32 和 x64 架构之间的区别?
请解释一下两者的区别x86 x32 and x64 说到这里有点令人困惑x86 and x32因为大多数时候 32 位程序在 x86 上运行 Hans 和 DarkDust 的回答涵盖了 i386 i686 和 amd64 x86 64 因
x86
64bit
x8664
cpuarchitecture
ABI
在 x64 ASM 中循环并打印 argv[]
我基本上一直在研究while循环遍历所有 CLI 参数 在研究仅打印 1 个元素的解决方案时 我注意到了一些事情 这就是引导我来到这里的思考过程 我注意到如果我这样做lea 16 rsp someRegisterToWrite 我能够获取
MacOS
Assembly
64bit
x8664
att
x86_64 程序集 - 尝试在 x64 程序集中编辑数组内的字节时出现段错误
我遵循的教程适用于 x86 是使用 32 位汇编编写的 我尝试在学习 x64 汇编的过程中遵循该教程 直到本课为止 一切都进展顺利 我有以下简单的程序 它只是尝试修改字符串中的单个字符 它编译得很好 但运行时出现段错误 section te
Assembly
segmentationfault
x8664
无法使用 Mac x86 程序集将 .data 中的变量移动到寄存器
我用 AT T 语法编写了一小段程序集 目前已在 data部分 但是 当我尝试将这些变量中的任何一个移动到寄存器时 例如 eax 一个错误来自gcc被提出 代码和错误信息如下 data x int 14 y int 4 str string
MacOS
Assembly
x8664
att
relativeaddressing
为什么编译器在堆栈中分配的内存多于所需的内存?
我有一个简单的 C 程序 比方说 我有一个 int 和一个长度为 20 的 char 数组 我总共需要 24 个字节 int main char buffer 20 int x 0 buffer 0 a buffer 19 a 堆栈需要与
c
gcc
stack
x8664
Allocation
为什么 strlen 的 REPNE SCASB 实现可以工作?
为什么这段代码有效 http www int80h org strlen 表示字符串地址必须位于EDI为 注册scasb工作 但这个汇编功能似乎并没有做到这一点 汇编代码为mystrlen global mystrlen mystrlen
c
Assembly
x8664
callingconvention
strlen
gdb 如何启动汇编编译的程序并一次执行一行?
Valgrind 在他们的文档页面上说了以下内容 然后 您的程序将在 Valgrind 核心提供的合成 CPU 上运行 然而GDB似乎并没有这样做 它似乎启动了一个独立执行的单独进程 据我所知 也没有c 库 这就是我所做的 使用 clang
Linux
Assembly
GDB
x8664
ptrace
为什么不将函数参数存储在 XMM 向量寄存器中?
我目前正在阅读一本书 计算机系统 程序员的视角 我发现 在 x86 64 架构上 我们仅限于 6 个整数参数 这些参数将传递给寄存器中的函数 接下来的参数将在堆栈上传递 此外 前最多 8 个 FP 或向量参数在 xmm0 7 中传递 为什么
Assembly
x86
parameterpassing
x8664
callingconvention
vmalloc_to_pfn 在 Linux 32 系统上返回 32 位地址。为什么它会砍掉 PAE 物理地址的高位?
我在用着vmalloc to pfn 获取 32 位 PAE Linux 系统上的物理地址 看起来 vmalloc to pfn 返回 unsigned long 这意味着它在 32 位系统上是 32 位 在 64 位系统上是 64 位 在
Linux
x8664
32bit
vmalloc
在 Objective-C 中使用内联汇编对变量进行 ROL / ROR
我想对 Objective C 程序中的变量执行 ROR 和 ROL 操作 然而 我无法做到这一点 我不是装配专家 这是我到目前为止所做的 uint8 t v1 uint8 t v2 v2 is either 1 2 3 4 or 5 as
Objectivec
xcode
x8664
inlineassembly
为什么使用push/pop而不是sub和mov?
当我使用不同的编译器时https godbolt org 我注意到编译器生成这样的代码是很常见的 push rax push rbx push rcx call rdx pop rcx pop rbx pop rax 我明白每个push o
Assembly
x86
x8664
cpuarchitecture
microoptimization
攻击实验室中操作码末尾的 c3
我正在开发攻击实验室的一个版本 对于阶段 4 和 5 在农场操作中 我有几个以 c3 结尾的操作 但后面还有一个单独的操作retq c3 指令如下 0000000000401a6e
Assembly
x8664
exploit
machinecode
opcode
检测英特尔 PIN 上的非法指令操作码
我正在编写一个 Pin 工具 我想在其中检测具有特定操作码的指令 我有一个来自示例 C 程序的可执行文件 我正在其中打印 hello world 使用的体系结构是 x86 64 我在程序中跟踪了汇编指令 我将该程序的汇编指令跟踪提供给英特尔
c
Assembly
x8664
intel
intelpin
«
1 ...
13
14
15
16
17
18
19
...21
»