- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试学习一些汇编,但我很难理解一些基本的东西是做什么的。 eax ebx ecx 只是变量还是除了存储值之外它们都有独特的特定用途?
最佳答案
eax, ebx, ecx 等等其实都是寄存器 , 可以看作是“硬件”变量,意思是不同于高级语言的变量。寄存器可以直接在您的软件中使用,如 mov
, add
或 cmp
.领先e
意味着扩展,即您的寄存器为 32 位宽。另一方面,64 位寄存器以 r
开头。 .
这些寄存器并非都用于如下所示的相同目的。此图显示了 Linux 64 位 ABI 的寄存器使用情况.
但是,此捕获中并未描述所有寄存器。例如 *ip
是一个特殊寄存器( process counter ),用于保存要执行的下一条指令。
您可以找到 full ABI there.一些信息是特定于 Linux 的,但大多数信息仍然适用于任何 POSIX - 合规系统。
关于assembly - 汇编中的eax ebx ecx有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58852308/
我正在查看一些程序集,我看到了这条线 CMP ECX, ECX 这对我来说没有意义,因为它不是总是正确的 A==A 吗? (自反属性) 不确定这是否会有所帮助,但它用于以下上下文: CPU Disas
我有这个: TEST ECX, 3 ECX 包含包含字符 'a' 的地址内存。 但是,经过测试,ZF设置为1!这怎么可能? 这里是截图before和 after指令。 最佳答案 ZF 指示最后一条指令
有人可以告诉我下面两个push ecx指令的目的是什么?我不明白他们应该做什么? 我意识到push epb正在保存栈基指针,然后mov epb, esp将栈指针分配给先前的栈基指针。 int main
我知道在c++中调用对象的非静态成员函数时,this指针是传入ecx寄存器的。静态函数呢,因为没有 this 指针,在这种情况下,编译器是否使用 ecx 寄存器来传递常规参数之一? 编辑 - 我在这里
在我正在读的一本书中,我们得到了以下片段和问题: This function uses a combination SCAS and STOS to do its work. First, expla
我需要增加一个数字,以便代码永远增加,但它保持为零。 这是我的代码: section .data FORMAT: db '%c', 0 FORMATDBG: db '%d', 10, 0 EQUAL:
这个问题在这里已经有了答案: Is mov %esi, %esi a no-op or not on x86-64? (2 个答案) Why did GCC generate mov %eax,%
我目前正在学习汇编语言,并且我有一个输出“Hello World!”的程序。 : section .text
我正在尝试运行一个非常简单的汇编程序,但是无论我做什么,我似乎都会遇到段错误。 这是我的代码(应该在 linux 机器上打印'a') section .data buffer times 50
为什么以下 C# 方法 CallViaStruct 的 X86 包含 cmp 指令? struct Struct { public void NoOp() { } } struct Struc
我正在尝试将一个比 %ecx 小 1 的值压入堆栈。 所以我为此尝试了这条指令: pushl $(%ecx - 1) 但是我从 as 得到了以下错误。 fact.s: Assembler messag
我在 Assembly x86 类的代码中遇到这个编译错误, A2070: invalid instruction operands 这条线是 shl eax, ecx ecx 应该是循环的(减 1)
我试图在运行时和远程启动驻留在另一个程序中的函数。 使用 ollydbg 我得到了函数地址,我使用 CreateRemoteThread要启动此函数,它实际上会运行此函数,但它会收到两个参数,如果没有
在标签 .L0 中,当我检查 %eax 寄存器的值时,我得到了正确的值。但是当我检查 ecx 寄存器的值时,它给了我零。我不知道为什么。也许这就是我遇到浮点段错误的原因。谁能帮我找出原因。 我试图生成
这个问题在这里已经有了答案: Why is the value of EDX overwritten when making call to printf? (2 个答案) 关闭 2 年前。 我知道
将这 3 条指令作为 movl 指令的源是什么意思? (%esi, %ecx, 4) 最佳答案 意思是: 计算地址 = (ESI + ECX * 4)。从该内存地址的 32 位值将值读入 EAX。 来
我想在屏幕上打印出“hi”这个词,但是 pop ecx 不工作。当我将其更改为 mov ecx, esp 时,将打印“hi”一词。 谁能解释一下为什么 pop ecx 不工作? global _sta
mov eax,[ecx+0CC] 的 asmjit 等价物是什么? 这是关闭的:c.mov_ptr(x86::eax, x86::ptr(x86::ecx, 0x0CC));但论点是错误的。 有什么
根据英特尔引用手册,如果CPUID.(EAX=14H, ECX=0):EBX.PTWRITE [Bit 4] = 0,指令将抛出#UD 异常。 如何检查这些值? 如果我使用 int __get_cpu
谷歌不显示结果, 有谁知道? 最佳答案 X 表示 对 ,并且至少可以追溯到 8080。它有 8 位寄存器 B、C、D、E、H、L(等等),它们也可以成对使用(BC、DE 和 HL)。 BC 和 DE
我是一名优秀的程序员,十分优秀!