相关疑难解决方法(0)

为什么x86寄存器的命名方式如何?

例如,累加器被命名EAX,并且在调用指令指针时IP.我也知道有些字节叫做CLDH.我知道所有名字都必须有一个约定,但它是什么?

x86 assembly history naming

23
推荐指数
5
解决办法
3882
查看次数

为什么rbp和rsp称为通用寄存器?

根据英特尔在x64中,以下寄存器称为通用寄存器(RAX,RBX,RCX,RDX,RBP,RSI,RDI,RSP和R8-R15)https://software.intel.com/en-us/articles/介绍到x64组装.

在下面的文章中,写了RBP和RSP是专用寄存器(RBP指向当前堆栈帧的基础,RSP指向当前堆栈帧的顶部). https://www.recurse.com/blog/7-understanding-c-by-learning-assembly

现在我有两个相互矛盾的陈述.英特尔声明应该是值得信赖的,但是什么是正确的,为什么RBP和RSP被称为通用目的?

谢谢你的帮助.

assembly x86-64 cpu-registers

20
推荐指数
2
解决办法
2万
查看次数

编写程序集时使用哪些寄存器重要吗?

如果您正在编写程序集,那么将值分配给哪个寄存器重要吗?假设您将累积/中间值存储在 %ebx 而不是 %eax 中,后者传统上用于此目的。这是不好的做法吗?会影响性能吗?

换句话说,您是否可以将它们等同于存储空间,还是应该坚持将它们用于特定目的?

x86 assembly cpu-registers accumulator

6
推荐指数
4
解决办法
1194
查看次数

数据寄存器 EAX、EBX、ECX 和 EDX 是否可以互换

我正在步入汇编语言编程的世界。我试图了解在以下位置找到的所有内容:https : //www.tutorialspoint.com/assembly_programming

我遇到了下面的代码:

section .text
     global _start      ;must be declared for using gcc
_start: ;tell linker entry point

;This part works fine.
;mov    edx, len    ;message length
;mov    ecx, msg    ;message to write

;This does not work because I interchanged edx and ecx.
mov ecx, len    ;message length
mov edx, msg    ;message to write

mov ebx, 1      ;file descriptor (stdout)
mov eax, 4      ;system call number (sys_write)
int 0x80        ;call kernel
mov eax, 1      ;system call number (sys_exit) …
Run Code Online (Sandbox Code Playgroud)

x86 assembly nasm cpu-registers

2
推荐指数
1
解决办法
4546
查看次数

标签 统计

assembly ×4

cpu-registers ×3

x86 ×3

accumulator ×1

history ×1

naming ×1

nasm ×1

x86-64 ×1