cpu-registers相关内容

在x86标志寄存器中,辅助进位和普通进位有什么不同?

我想知道这个x86寄存器标志在DOS/Windows程序调试中的含义: 辅助进位(AC = 1或NA = 0) 它与公共进位的含义相同吗?(CY = 1或NC = 0) 推荐答案 当指令导致进位或借出位3时,设置辅助进位标志。与CY的概念相同,只是用于字节中的低位半字节的高位。缩写AC是旧式,该标志在英特尔处理器手册中命名为“AF”,是“调整标志”的缩写。它被少数执行BCD ..
发布时间:2022-06-06 10:09:18 其他开发

计算机CPU中的寄存器

我只是想验证CPU本身是否支持“寄存器”名称。我是说阿格0阿格特2..。ETC在“名字”的末尾。CPU也支持名字吗?!我不是问寄存器本身,我是问CPU是否支持它可以操作的寄存器的名称? 推荐答案 名字是一种神奇的东西,而不是物理上的 这就是重点。名字纯粹是我们人类阅读的。CPU完全没有名称的概念。它们唯一处理的是数字。字符是数字,地址是数字,指令是数字……寄存器也是如此,它们也只 ..
发布时间:2022-04-08 14:39:17 其他开发

从寄存器中提取字段的MIPS指令

解决方案手册中的答案对于这个位域提取问题似乎是错误的。我的问题发布在下面。 以下是设置: 提出的问题是: 查找最短的MIPS指令序列,以提取 常量值i=22和j=5的$t0中的字段,并将该字段放入$t1 采用数据表中显示的格式。 解决方案手册给出了以下答案: lui $t1, 0x003f ori $t1, $t0, 0xffe0 and $t1, $t0, $t1 sr ..
发布时间:2022-03-27 22:09:38 其他开发

在MIPS中使用$t0而不是$8

查看各种MIPS引用,您可以使用通用名称或寄存器编号访问寄存器。这些语句是否有任何差异: addi $t0, $t0, 1 addi $8, $8, 1 此外, addi $4, $t3, $zero 本质上只表示$T2=$T4,对吗? 推荐答案 它们是字面上相同的,是的。如果您想要确定,请汇编并检查输出二进制文件。示例文件: .globl f f: ..
发布时间:2022-03-27 20:50:07 其他开发

C和C++中寄存器变量的地址

我知道寄存器变量的概念及其用例,但根据我的尝试,我的脑海中几乎没有问题. 虽然我可以在 C++ 中访问,但我无法访问 C 中的寄存器变量的地址!为什么?访问寄存器变量的地址有什么问题吗? 假设如果我在 C++ 中将一个字符串变量声明为寄存器,那么该变量将存储在哪里?将C++中的'string'等非数字数据类型的存储类声明为register有什么意义? 更新:我认为 C++ 允许我 ..
发布时间:2022-01-23 20:53:14 C/C++开发

如何在 gdb 中打印 -0x4(%rbp)?

反汇编中有这样的代码: movl $0x6,-0x4(%rbp) 我尝试以这种方式打印值但失败: (gdb) p 0x4(%esp)表达式中的语法错误,在 `%esp)' 附近.(gdb) p 0x4+$esp算术运算的参数不是数字或布尔值. 如何正确打印? 解决方案 看起来你正在使用 64 位代码,在这种情况下你只需要,例如: (gdb) p $rbp-0x4$1 = (voi ..
发布时间:2022-01-20 20:46:42 其他开发

了解切换条件下的寄存器用法

我有一个 C 和汇编代码中的开关条件代码.但在我看来,设置什么是非常随意的,edx 或 eax 或 ecx? 如何区分 edx、epx、ecx、ebp?连教科书都没有给我充分的解释. #include //枚举类型创建一组常量//编号为 0 及以上typedef enum {MODE_A, MODE_B, MODE_C, MODE_D, MODE_E} mode_t;in ..
发布时间:2022-01-19 11:13:06 其他开发

Printf 更改寄存器中的值,ARM 汇编

我是汇编编程的新手,我正在为 ARM 编程.我正在制作一个包含两个子例程的程序:一个在内存中的字节向量上附加一个字节信息,一个打印这个向量.向量的第一个地址包含后面的元素数量,最多 255 个.当我使用 GDB 调试它时,我可以看到“appendbyte"子例程工作正常.但是当涉及到“printvector"时,就会出现一些问题.首先,在寄存器 r1 中加载的元素是错误的(它加载了 0,而它应该是 ..
发布时间:2022-01-17 13:43:01 其他开发

可以在prolog中模拟一个简单的CPU吗?

我的理解是,CPU 的简单模型是状态机. 当我查看 prolog 时,它似乎是树搜索(或图形搜索)组合,同时在约束处停止运行,直到找到它的目标. 有人告诉我,您可以在 prolog 中模拟一个简单的 CPU. 是否可以在 prolog 中像简单的 CPU 一样表示状态机模型? 解决方案 Prolog 是图灵完备的语言,因此您可以在其中表达任意计算,包括对 CPU 的模拟. ..
发布时间:2022-01-12 10:33:17 其他开发

gdb 如何读取它正在调试的程序/进程的寄存器值?寄存器如何与进程关联?

我用c++写了一个小程序: #include使用命名空间标准;诠释主要(){诠释 x=10;整数 y=20;cout 只是出于好奇,我想了解一个幕后的程序,所以我在玩 gdb &遇到 info registers 命令.当我在 gdb 中使用 info registers 时,我得到如下输出: (gdb) 信息寄存器拉克斯 0x400756 4196182RBX 0x0 0回复 0x6 6r ..
发布时间:2022-01-11 23:33:28 C/C++开发

R 在 RAX、RBX、RCX、RDX、RSI、RDI、RBP、RSP 中代表什么?

x86 汇编语言不得不改变,因为 x86 处理器架构已经从 8 位变为 16 位,再到 32 位和现在的 64 位. 我知道在 32 位汇编寄存器名称(EAX、EBX 等)中,每个名称的前缀 E 代表 Extended 表示寄存器的 32 位形式而不是 16 位形式(AX、BX 等).). 这些寄存器名称的 R 前缀在 64 位中代表什么? 解决方案 我认为它只是 R 代表“寄 ..
发布时间:2022-01-06 13:13:01 其他开发

X 在 EAX、EBX、ECX 中是什么意思……在汇编中?

Google 不显示结果, 有人知道吗? 解决方案 X 表示 pair,至少可以追溯到 8080.它有 8 位寄存器 B、C、D、E、H、L(以及其他)也可以成对使用(BC、DE 和 HL).BC 和 DE 对主要用于 16 位算术;HL 对通常持有一个内存地址.X 用于 pair 的一些示例: LXI D,12ABH ;“立即加载对"DCX B ;“递减对"STAX D ;“以对 ..
发布时间:2022-01-06 13:12:42 其他开发

如何从程序访问控制寄存器 cr0,cr2,cr3?获取分段错误

我编写了一个程序,试图读取和写入控制寄存器. 程序编译正常,但是当内联汇编即将执行时,它产生了一个分段错误. 代码: void 指令(int val){国际我;整数值;for(i = 0; i 我使用 GDB 并通过每条装配线,在 mov %cr0,%eax 上发生了分段错误. 谁知道哪里出了问题? 解决方案 引用自 英特尔® 64 和 IA-32 架构软件开发人员 ..
发布时间:2022-01-06 13:01:43 其他开发

x86 寄存器:MBR/MDR 和指令寄存器

据我所知,IA-32 架构有十个 32 位寄存器和六个 16 位寄存器. 32位寄存器如下: 数据寄存器 - EAX、EBX、ECX、EDX 指针寄存器 - EIP、ESP、EBP 索引寄存器 - ESI、EDI 控制寄存器 - EFLAG(EIP 也被归类为控制寄存器) 16 位寄存器如下: 代码段:它包含要执行的所有指令. 数据段:它包含数据、常量和工作区. ..
发布时间:2022-01-06 12:31:28 其他开发