Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
为什么Assembly x86_64系统调用参数不像i386那样按字母顺序排列
有一个问题困扰着我 那么 为什么在x86 32 the 参数在我认为在的寄存器中传递按字母顺序 eax ecx edx esi and ranked order esi edi ebp syscall arg0 arg1 arg2 arg3
Assembly
x86
x8664
cpuregisters
callingconvention
ESP 和 EAX 一样通用吗?
在x86架构下 可以做什么EAX但不与ESP 忘记了push and pop and call ESP 由中断隐式异步使用 在现代操作系统中 这只适用于内核堆栈 不适用于用户空间堆栈 当中断使能时 内核代码始终需要保持 ESP 有效 并假设
Assembly
x86
cpuregisters
为什么 x86 寄存器如此命名?
例如 累加器命名为EAX并且 当指令指针被调用时IP 我还知道有一些字节称为CL and DH 我知道所有的名字一定有一个约定 但是它是什么 我发现的东西 EAX Accumulator Register EBX Base Register
Assembly
x86
naming
history
cpuregisters
x86 标志寄存器中的辅助进位和普通进位有什么区别?
我想知道这个x86寄存器标志在DOS Windows程序Debug中意味着什么 辅助进位 AC 1 or NA 0 和普通carry的意思一样吗 CY 1 or NC 0 当指令导致位 3 进位或借位时 辅助进位标志被设置 与 CY 的想法
x86
cpuarchitecture
flags
cpuregisters
如何通知 GCC 不要使用特定寄存器
假设我有一个非常大的源代码并打算制作rdx在执行期间完全未使用寄存器 即在生成汇编代码时 我想要的只是通知我的编译器 GCC 它不应该使用rdx at all 注 注册rdx这只是一个例子 我对任何可用的 Intel x86 寄存器都满意
Linux
gcc
compilerconstruction
cpuregisters
限制例程使用一组有限的寄存器
使用编译器选项 是否可以限制例程使用某些寄存器集 例如 限制例程仅使用R0 R8 目的 如果某些编译器选项可用 那么我可以确保某些例程 如中断服务例程 仅使用有限的寄存器集 从而进行有限的上下文保存和恢复 上次讨论这个问题时 共识是在逐个功
Assembly
compilerconstruction
arm
cpuregisters
CPUID标准函数01H是什么?
我需要检查ECX对于位 30 这是必要的 CPU 功能RDRAND 来自RDRAND Wiki 如果支持 则在调用 CPUID 标准功能 01H 后设置 ECX 寄存器的位 30 我不太清楚这意味着什么 标准功能01H 意思是不是EAX 8
c
Assembly
x86
cpuregisters
cpuid
x86 段寄存器在现代 CPU 和操作系统上有特殊含义/用途吗?
从 16 位到 32 位再到 64 位 x86 CPU 历代都有各种棘手的模式和内存分段 如今 现代操作系统在现代操作模式下使用现代 CPU 您不必担心内存段 但您仍然可以在现代 CPU 上的旧操作系统上运行旧应用程序 在这种情况下 我假设
x86
history
cpuregisters
memorysegmentation
读取RIP寄存器给出下一条指令的地址? [复制]
这个问题在这里已经有答案了 我尝试读取x86 64寄存器的值rip 这是什么objdump shows 4017ec 48 8d 35 00 00 00 00 lea 0x0 rip rsi 4017f3 41 89 d4 mov edx
Assembly
x8664
cpuregisters
addressingmode
如何在gdb中打印-0x4(%rbp)?
反汇编中有这样的代码 movl 0x6 0x4 rbp 我尝试以这种方式打印该值但失败 gdb p 0x4 esp A syntax error in expression near esp gdb p 0x4 esp Argument t
GDB
cpuregisters
什么是 CPU 寄存器以及它们如何使用,特别是 WRT 多线程?
这个问题和我下面的回答主要是针对另一个问题中的一个困惑的地方 在答案的最后 有一些我并不完全有信心的 WRT 易失性 和线程同步问题 我欢迎评论和替代答案 然而 问题的重点主要涉及 CPU 寄存器及其使用方式 寄存器是 CPU 中的 工作存
Assembly
codegeneration
compilerconstruction
cpuregisters
MXCSR控制寄存器的范围?
我想知道什么是MXCSR 控制寄存器中存储的值的生命周期 包括非正规浮点数的 FTZ 和 DAZ 配置 它是否在线程范围内 或者对于 CPU FPU 上的所有处理都是通用的 我想知道的是 是否需要在线程池的每个线程开始时或在应用程序中根据需
floatingpoint
x86
SSE
cpuregisters
FPU
64 位架构中的汇编寄存器
继回答有关汇编寄存器大小的问题 首先 尺寸是多少eax ax ah以及 64 位架构中的对应产品 如何访问单个寄存器的字节以及如何访问所有64位寄存器的八个字节 我希望双方都受到关注x86 64 x64 and Itanium处理器 其次
Assembly
x8664
32bit64bit
cpuregisters
itanium
ESP在汇编中是什么意思? [复制]
这个问题在这里已经有答案了 ESP stack pointer 什么是E站在这里 UPDATE 64 位的 RSP 什么是R意思是这里 E代表Extended 随着32位80386处理器的出现 16位通用寄存器 基址寄存器 索引寄存器 指令
Architecture
syntax
Assembly
preprocessor
cpuregisters
AX、AH、AL如何映射到EAX?
我对x86寄存器的理解是 每个寄存器都可以被整个32位代码访问 并且它被分成多个可访问的寄存器 在这个例子中EAX作为一个 32 位寄存器 如果我们调用AX它应该返回前 16 位 如果我们调用AH or AL它应该返回 16 位之后的接下来
Assembly
x86
cpuregisters
x86 给定 AH 和 AL 计算 AX?
我在理解x86汇编中的寄存器时遇到困难 我知道EAX是完整的32位 AX是低16位 然后AH和AL是AX的高8位和低8位 但我正在做一个问题 如果 AL 10 且 AH 10 AX 中的值是多少 我对此的想法是将 10 转换为二进制 101
Assembly
x86
cpuregisters
在 ARM 上的 Linux 中写入和读取内存映射设备寄存器
我正在尝试按照以下步骤读取和写入 ARM9 SAM9X25 上的寄存器 http infocenter arm com help index jsp topic com arm doc faqs ka3750 html我以以下代码结束 in
c
Linux
arm
cpuregisters
GPIO
x86_64 寄存器 rax/eax/ax/al 覆盖完整寄存器内容[重复]
这个问题在这里已经有答案了 正如广泛宣传的那样 现代 x86 64 处理器具有 64 位寄存器 可以以向后兼容的方式用作 32 位寄存器 16 位寄存器甚至 8 位寄存器 例如 0x1122334455667788 rax 64 bits
Assembly
x8664
cpuregisters
zeroextension
MIPS 上的零美元真的是硬件零吗?
我对 x86 64 汇编很坚定 可能不是专家 但一个平台的汇编器与下一个平台的汇编器的许多方面都是相似的 所以我也试图回答实际上不在我知识范围内的问题 我偶然发现了几个有关 MIPS 汇编的问题 这唤醒了我对细节的兴趣 因此我查阅了一些在线
Assembly
MIPS
cpuregisters
为什么我们要在汇编中使用 CPU 寄存器,而不是直接使用内存呢?
我有一个关于装配的基本问题 如果算术运算也可以在内存上运行 为什么我们还要费心只在寄存器上进行算术运算呢 例如 以下两个原因 本质上 导致计算出相同的值作为答案 片段1 data var dd 00000400h code Start ad
performance
Assembly
cpuarchitecture
cpuregisters
«
1
2
3
4
5
»