问题标签 [status-register]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1819 浏览

assembly - 关于汇编条件码寄存器

假设我们使用addl 指令执行 C 表达式 "t=a+b" 的等价,其中 a,b,t 是 int类型的变量,那么条件代码将根据以下 C 表达式设置:

CF: (unsigned t) < (unsigned a) 无符号溢出

ZF: (t==0) 零

SF: (t<0) 负

OF: (a<0 == b<0) && (t<0 != a<0) 有符号溢出

引用自计算机系统教科书。

  • CF 是进位标志。
  • ZF 是零标志。
  • SF 是标志标志。
  • OF 是溢出标志。

我不明白为什么这些 C 表达式有上面提到的效果。例如,为什么表达式 (t<0) 会设置 SF 标志?t<0 为真或假(因为教科书只告诉了这些变量的类型),但是为什么设置了标志标志?我真的很困惑,请帮助..谢谢!

0 投票
3 回答
627 浏览

c++ - 帮助将此程序集翻译成 c

我的编译器无法与我拥有的汇编文件一起使用,而我的其他编译器也无法与我拥有的 c 文件一起使用。我不懂组装。我需要把它移过来,但我没有快速到达任何地方。有没有人可以提供帮助?我不敢相信没有可用的翻译。这是文件的开头:

我知道我可以排除前两行,因为设备定义无论如何都在我的 main.c 中。这两个#defines 就是这样,但最简单的方法(我认为)是相应地用 STATUS,2 和 STATUS,0 替换 _Z 和 _C 的实例。接下来的几行(GLOBAL)只是我正在收集的变量声明。与 LSB 和 MSB 相同,除了它们也分配值。下一个块我想我只是声明了一堆具有这些名称(AARGB0 等)的整数,然后后面的块是一个函数。

我什至懒得翻译那个函数,因为我的编译器有 #asm/#end asm 指令,所以我可以把它放在 raw 中(只要它包含在一个函数中)。

我想我已经拥有了一切......直到我构建并且我的编译器尖叫着 STATUS 没有被定义。当然不是。但它是什么?我在网上看到 STATUS 寄存器很特别,但我真的不明白它是如何工作的。

如果您没有注意到,我什至不确定我真正要问的是什么。我只是想让这该死的东西起作用。

0 投票
1 回答
143 浏览

embedded - 全寄存器访问含义

我正在研究 MSP430 微控制器,并且正在研究它的架构。在用户指南中,在其功能选项卡下,有这样的语句 - “完整的寄存器访问,包括程序计数器 (PC)、状态寄存器 (SR) 和堆栈指针 (SP) ”。我的印象是,无论架构如何,CPU 总是可以访问所有寄存器。

我对声明的理解可能是错误的。谁能解释一下这到底是什么意思?

0 投票
1 回答
11727 浏览

verilog - 使用 Verilog 在 32 位 ALU 中实现一位标志

我正在完成一项任务,有点迷茫,不知道如何开始。我需要在 32 位 ALU 中实现以下标志:

• Z(“Zero”):如果运算结果为零,则设置为 1(“True”)

• N(“Negative”):如果结果的第一位是 1,则设置为 1(“True”),表示负数

• O(“溢出”):设置为1(“真”)表示操作溢出总线宽度。

此外,一个比较函数将输入 a 与输入 b 进行比较,然后设置三个标志之一:

• 如果输入 a 小于输入 b,则为 LT

• GT 如果输入 a 大于输入 b

• EQ 如果输入 a 等于输入 b

我需要修改此 ALU 以包含三个标志和比较输出,然后更改测试台以测试所有这些修改。

这是我为这项作业收到的所有信息,实际上没有教科书或任何其他资源。这是一个在线课程,我无法得到老师的回应。所以我对如何开始有点困惑。在数字逻辑方面,我仍然是个新手,所以请多多包涵。我只需要一些帮助来理解这些标志和比较是如何工作的。如果有人能更好地向我解释它们是如何工作的,它们是做什么的,以及我如何将它们实现到 ALU 和测试平台中,我将不胜感激。

我不指望任何人来完成我的任务,我真的只需要帮助理解它。

铝型材

ALU 测试台

0 投票
1 回答
2880 浏览

assembly - 状态寄存器上实际使用了多少位 (8086)

在课堂上问这个,我想我明白但不确定,所以我想确认一下。

状态寄存器有 16 位,每个位都有一个标志。但是,我们的讲座幻灯片中提供的图像是否显示不同?

状态寄存器

该图像显示只有某些位实际上具有标志。这是否意味着实际上只有这些位被使用?剩下的只是饲料?

如果我的问题不清楚,我很抱歉,如果有人问,我可以尝试解释更多。

目前,我认为实际上只使用了 9 位?

0 投票
3 回答
1175 浏览

gcc - 调用函数时保存状态寄存器

据我了解,当我根据 GCC 调用约定调用函数时,会发生以下情况:

调用者保存 AX、CX 和 DX 寄存器的值。参数和返回地址被压入堆栈。此外,calle 必须保留 SI、DI、BX 和 BP 寄存器的值。

但是,状态寄存器呢?谁来拯救它?

另外,压入堆栈的返回地址的值实际上是指令寄存器的值吗?

0 投票
2 回答
420 浏览

assembly - 有条件地清除寄存器的无分支方式

是否有根据状态寄存器状态清除 32 位寄存器的无分支方式?可以使用额外的清除寄存器和 来实现,但在 32 位模式下的x86CMOVcc上对我来说太贵了。可悲的是没有即时操作数的版本。从内存中读取也是不好的变体。CMOVcc

x86上有SETcc(虽然,操作数是 1 个字节)但没有 " CLEARcc" 指令。

0 投票
1 回答
1980 浏览

motorola - 摩托罗拉 68k:了解状态注册器标志状态

我无法理解状态寄存器 (SR) 内容的工作原理。

在此处输入图像描述

假设 (SR) 的内容 = $0300。我如何确定标志处于哪些状态?
当然,这也可以回答这个问题,如果标志处于 [在此处插入状态],(SR) = $????

0 投票
0 回答
96 浏览

c - 状态寄存器:为什么它不能正常工作

一个硬件有一个单字节的状态寄存器。寄存器的 LSB 是一个“忙”位。在写入设备中的任何寄存器之前,驱动程序必须等待该位清除。考虑以下代码:

代码不起作用。驱动程序经常挂起等待硬件“准备好”。请列出可能发生这种情况的原因。

0 投票
1 回答
955 浏览

kernel-mode - 陷阱指令:为什么必须原子地改变程序计数器和处理器状态寄存器?

我在操作系统课上的一次考试中遇到了以下问题。

考虑一个架构,其中 TRAP 指令有两个效果:加载包含用户/内核模式位的处理器状态寄存器 (PCR) 的预定义值,将程序计数器 (PC) 的值保存到特殊的 Save PC注册并将预定义的值加载到 PC 中。解释为什么在同一指令周期内不改变 PC 就为 PCR 加载一个新值是不安全的。

我知道 PCR 将设置为内核模式,内存管理关闭。是否因为 PC 仍在用户程序中而不安全?如果是这样,哪里会出错?如果不是,为什么不安全?为什么先换电脑也不安全?