Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
推送 64 位 intel osx
我想将 64 位地址压入堆栈 如下所示 asm pushq 0x1122334455667788 但我得到编译错误 我只能按以下方式推送 asm pushq 0x11223344 有人可以帮助我理解我的错误吗 我是装配新手 所以如果我的问题
MacOS
Assembly
x8664
x86-64 Linux 中不再允许使用 32 位绝对地址?
64 位 Linux 默认使用小内存模型 将所有代码和静态数据置于 2GB 地址限制以下 这确保您可以使用 32 位绝对地址 旧版本的 gcc 对静态数组使用 32 位绝对地址 以便节省相对地址计算的额外指令 然而 这不再有效 如果我尝试在
Linux
gcc
x8664
linkererrors
relocation
分配内存空间的宏
我需要让一个汇编程序员来计算帕斯卡三角形 https en wikipedia org wiki Pascal 27s triangle 这样帕斯卡三角形的每一行都与其他行分开存储在内存中 我想做一个 但我不知道如何使用宏在汇编中做到这一点
Assembly
x86
nasm
x8664
MASM
在长模式下更改 GDT 并更新 CS
我正在编写一个简单的自制 64 位操作系统 通过 UEFI 启动它 这意味着当我的代码开始执行时 它已经处于长模式 并且启用了分页 现在 退出 UEFI 引导服务后 我想用我自己的控制结构替换 UEFI 构建的所有控制结构 成功更改 CR3
Assembly
64bit
x8664
osdev
gdt
如何可移植地乘以 64 位操作数并获得 128 位结果?
对于 x64 我可以使用这个 uint64 t hi lo hi lo 64bit x 64bit multiply of c 0 and b 0 asm mulq 3 n t d hi a lo a c 0 rm b 0 cc a 0 h
c
Assembly
gcc
x8664
“mov offset(%rip),%rax”有什么作用?
Does rax获取偏移量加上这条指令的地址 还是下一条指令的地址 从微代码的角度来看 如果答案是下一条指令可能会更容易 下一个 这是 x86 上的一般规则 另请参阅分支 在 Intel 手册第 2 卷第 2 2 1 6 RIP 相对寻址部
Assembly
x8664
att
addressingmode
relativeaddressing
源操作数和目标操作数是否需要相同大小?
我刚刚尝试了这个问题 要求你解释一下代码行有什么问题 movl eax rdx 解决方案表明目标操作数的大小错误 仅当从较大尺寸变为较小尺寸时才 非法 还是源操作数和目标操作数对于所有指令 或至少 mov 类类型 必须具有相同的尺寸 是的
Assembly
x86
x8664
为什么push指令会改变rsp的值? [复制]
这个问题在这里已经有答案了 我正在检查 Ericksons Hacking The Art of Exploitation 中的这段代码片段 void test function int a int b int c int d int fl
c
Assembly
x8664
Linux 如何在 x86-64 中支持超过 512GB 的虚拟地址范围?
Linux 中 x86 64 的用户虚拟地址空间为 47 位长 这本质上意味着 Linux 可以映射大约 128 TB 虚拟地址范围的进程 然而 令我困惑的是 x86 64 架构支持 ISA 为每个进程定义的 4 级分层页表 排列为基数树
Linux
Linuxkernel
x8664
MMU
GCC 内联汇编错误:“‘int’的操作数大小不匹配”
首先 如果有人知道标准 C 库的函数 则会打印 一个字符串 无需寻找二进制零 但需要绘制字符数 请告诉我 否则 我会遇到这个问题 void printStringWithLength char str ptr int n chars asm
c
Assembly
gcc
x8664
inlineassembly
为什么 Linux/gnu 链接器选择地址 0x400000?
我正在 Linux x86 64 上试验 ELF 可执行文件和 gnu 工具链 我已经链接并剥离 手动 Hello World 测试 global start text start mov 1 rax 转换为 267 字节 ELF64 可执
Linux
x86
x8664
ld
ELF
如何在 x86_64 上准确地衡量未对齐访问速度?
In 一个答案 https stackoverflow com questions 45116212 are packed structs portable 45116730 45116730 我已经说过 在很长一段时间内 未对齐访问的速度
performance
x86
x8664
benchmarking
inlineassembly
Fork 系统调用失败后 rax 中的返回值是多少?
我知道打电话fork 在C中如果有错误将返回 1 但我想知道当你调用时错误返回值是什么sys fork在装配中 我通常会假设它也返回 1 但我已经处理过 sys brk 并且汇编中的原始系统调用返回与 C Brk 包装器不同的东西 有谁知道
Linux
Assembly
x8664
systemcalls
最小操作码大小 x86-64 strlen 实现
我正在研究最小操作码大小x86 64 strlen我的代码高尔夫 二进制可执行文件的实现不应超过一定的大小 为简单起见 请考虑 demoscene 总体思路来自于here http www int80h org strlen 尺寸优化思路来
Assembly
nasm
x8664
yasm
为什么 printf 仍然可以在 RAX 小于 XMM 寄存器中 FP 参数数量的情况下工作?
我正在关注Linux 64系统中的 开始x64汇编编程 一书 我正在使用 NASM 和 gcc 在关于浮点运算的章节中 本书指定了以下用于添加 2 个浮点数的代码 在本书和其他在线资源中 我读到寄存器 RAX 根据调用约定指定要使用的 XM
Linux
Assembly
x8664
nasm
callingconvention
算术恒等式和 EFLAGS
因为 x not x 1 意味着 a b a not b 1 那么 sub rax rcx 相当于 mov temp rcx not temp add rax temp add rax 1 其中 temp 是一些被认为是易失性的寄存器 换句
Assembly
x86
x8664
eflags
在 x86-64 上,“movnti”指令是原子指令吗?
在 x86 64 CPU Intel 或 AMD 上 将 4 8 字节写入 32 64 位对齐地址的 movnti 指令是原子的吗 Yes movnti在自然对齐的地址上是原子的 就像 x86 上所有其他自然对齐的 8 16 32 64b
x8664
atomic
汇编程序中的重定位截断错误
我对汇编语言完全陌生 我尝试编写简单的程序来破译凯撒密码 问题是链接后我收到以下错误 cezar o In function loop text 0xbf relocation truncated to fit R X86 64 8 aga
Assembly
x8664
att
relocation
从信号处理程序返回而不进入内核+用户空间中断
这是我的旧问题的后续 通过 setcontext 从信号处理程序返回 https stackoverflow com questions 69237910 returning from a signal handler via setcon
Linux
Assembly
signals
x8664
interrupt
将 32 位和 64 位代码链接到一个二进制文件中
在对此问题的评论中 内核空间 C 代码中简单指针算术的意外行为 https stackoverflow com questions 49470691 unexpected behaviour in simple pointer arithm
gcc
x8664
osdev
binutils
1
2
3
4
5
6
...19
»