alu相关内容

CPU是怎么做减法的?

我有一些基本的疑问,但每次我坐下来尝试面试问题时,这些问题和我的疑问都会弹出. 假设 A = 5,B = -2.假设A和B是4个字节,CPU是如何做A+B加法的? 我知道 A 的符号位 (MSB) 为 0 以表示正值B 的符号位为 1 表示负整数. 现在在C++程序中,我想打印A + B,ALU(算术逻辑单元)的加法模块是否先检查符号位,然后决定做减法,然后按照减法的过程.如何减 ..
发布时间:2021-12-17 15:12:00 其他开发

Verilog 错误:不是有效的左值

我正在尝试测试电线是否打开以表示我的 alu 代码中是否存在错误/溢出.鉴于此代码: 输出reg[3:0]x;//第 149 行输出线错误;输出线溢出;总是@* 开始如果(错误 || 溢出)开始分配 x = 4'b1111;//第 155 行分配错误 = ~错误;分配溢出 = ~溢出;结束其他开始分配 x = 操作码;结尾结尾 我收到以下错误消息: uut 是我的测试平台中名为 main ..
发布时间:2021-09-17 19:25:20 其他开发

MIC IJVM 2位简单和

一个关于IJVM中计算的简单问题,因为我在他们的文档中找不到解决方案。 假设我们需要执行以下计算: BIPUSH 0x32 // PUSH 2 BIPUSH 0x33 // PUSH 3 IADD // PUSH sum(2,3) OUT //输出:“ e” IADD ---->从堆栈中弹出两个单词;推动他们的总和 我知道解决 ..
发布时间:2020-06-04 19:21:36 其他开发

为什么没有为二进制减法设置溢出标志?

我有基本的二进制数学问题。例如; reg [31:0] a = 32’hFFFF_FFFF; reg [31:0] b = 32’hFFFF_FFFF; reg [31:0] c = 0; 我知道c = a-b将导致为零,并且不会设置溢出标志。 我的理解是ALU使用2的subtrahend补码(运算符的右侧)并将其添加到被减数(运算符的左侧)。 ..
发布时间:2020-06-04 19:21:33 其他开发

连续作业验证

-此代码是使用Modelsim 10.2d在verilog中编写的。以下错误表明{cout,l3}分配存在一些问题。 module alu(a,b,bin,cin,op,cout,res); 输入[31:0] a,b; input [1:0] op; 输入bin,cin; reg [31:0] l1,l2,l3; 输出提示; 输出[31:0] res; 分配l1 = ..
发布时间:2020-06-04 19:21:29 其他开发

由多个1位ALU组成4位ALU

我正在尝试将几个1位ALU合并为一个4位ALU。我对如何在VHDL中实际执行此操作感到困惑。这是我使用的1位ALU的代码: component alu1-定义1位alu组件 port(a,b:std_logic_vector(1降至0); m:in std_logic_vector(1降至0); 结果:out std_logic_vector(1降至0)); end alu1; ..
发布时间:2020-06-04 19:21:26 其他开发

使用1位ALU制作16位ALU

你好,我试图从几个1位ALU中创建一个16位ALU 我创建了一个名为basic_alu1的程序包,其中包含1位ALU的一个组件,其代码为: 库ieee; 使用ieee.std_logic_1164.all; 包basic_alu1是 组件alu1 端口(a,b:std_logic_vector(1降至0); m:in std_logic_vector(1降至0); 结果:出std ..
发布时间:2020-06-04 19:21:24 其他开发

在硬件级别上如何实现转变?

当要转移的数目未知时,如何在硬件级别实现移位? 我无法想象每个转移电路都有单独的电路可以移位的数字(在64位计算机上需要64个移位电路),也不能想象这是一个移位循环(在64位计算机上最多需要64个移位周期)。两者之间是某种妥协还是巧妙的技巧? 解决方案 该电路称为“ 桶形移位器“-基本上是多路复用器的负载。每个地址位需要移位一层,因此一个8位的桶形移位器需要三位来表示“要移位多少”, ..
发布时间:2020-06-04 19:21:20 其他开发

使用无符号字符和无字符串将十进制转换为16位二进制

如果我将操作数1和操作数2用作整数,我的代码将起作用。使用无符号char操作数1无效。你能帮我吗? int ALU(unsigned char operatornd1,unsigned char operatornd2) { printf (“输入操作数1(十进制):”); scanf(“%d”,& operand1); printf(“ \n输入操作数2(十进制):”); ..
发布时间:2020-06-04 18:50:43 其他开发

现代X86处理器实际上如何计算乘法?

我正在看一些关于算法的讲座,而教授以乘法为例,说明了如何改进天真的算法... 这让我意识到乘法并不是很明显,尽管我在编码时只是将其视为简单的原子操作,但乘法运算需要运行一种算法,它不能像对数字求和一样工作。 所以我想知道,现代台式机处理器实际使用什么算法?我猜他们不依赖对数表,也不用成千上万的和进行循环... 解决方案 Mitch Alsup(曾在Motorola 88K,Ro ..
发布时间:2020-06-03 20:19:14 其他开发

如何为16位二进制加法设置辅助标志

我知道在执行8位二进制加法时,如果从第3位到第4位有进位,则辅助标志设置为1;但是2个16位数字的加法呢?我在网上看不到任何明确的答案。 我正在研究Intel 8086微处理器... 例如,当我将这两个数字相加时,0x30a2和0xf1ac 0011 0000 1010 0010 + 1111 0001 1010 1100 CF = 1 ZF = 0 PF = 1 ..
发布时间:2020-06-02 18:41:08 其他开发

内存层次结构-为什么寄存器价格昂贵?

我了解: 更快访问时间> 更多昂贵 较慢访问时间> 较少昂贵 我还了解到寄存器是层次结构的顶部,并且具有最快的访问时间.我很难研究的是为什么这么贵?据我所知,寄存器实际上是直接内置到ALU中的电路.如果它们实际上是内置在CPU中的(特别是ALU),实际上是什么使它最昂贵? 是大小吗(当然是最小的)? 解决方案 寄存器非常非常昂贵,因为它们必须非常非常快,并且需要同时 ..
发布时间:2020-05-08 19:48:49 其他开发

CPU如何进行减法?

我有一些基本的疑问,但是每次我坐下来尝试面试问题时,这些问题和我的疑问就会弹出. 说A = 5,B = -2.假设A和B为4字节,CPU如何执行A + B加法? 我知道A的符号位(MSB)为0表示正值 B的符号位为1表示负整数. 现在在C ++程序中时,我要打印A + B,请先执行ALU(算术逻辑单元)的加法模块检查符号位,然后决定进行减法,然后按照减法的步骤进行操作.如何进行减 ..
发布时间:2020-05-06 10:29:59 其他开发

每个浮点操作是否都采用相同的时间?

我相信无论操作数有多大,整数加法或减法总是占用相同的时间。 ALU输出稳定所需的时间可能随输入操作数而变化,但利用ALU输出的CPU组件将等待足够长的时间,以便在同一周期内处理任何整数运算。 (ADD,SUB,MUL和DIV所需的周期将会不同,但ADD会采用相同的周期,无论输入操作数是多少,我认为。) 这对于浮点运算也是如此吗? 我试图实现一个包含大量浮点操作的程序。我想知道是否有助 ..

如何CPU做减法

我有一些基本的怀疑,但每次我坐在尝试我的手在面试问题,这些问题和我的疑惑弹出。 说= 5 B = -2 我说A + B。我假设A和B是4字节 如何在CPU做加法? 据我所知,将有符号位(MSB)为0,表示正整数 和B将有符号位为1来表示负整数。 现在当C ++程序,我想打印A + B,确实ALU(算术逻辑单元)的加入模块符号位先检查,然后决定做减法,然后按照减法的过程。扣除的方式将是 ..
发布时间:2016-08-07 19:46:36 开发方法