首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

昆仑通态HMI modbusRTU 的精度浮点读取

01应用背景 昨天,咱一优质资深老客户突然找到我,很严肃地跟我说有个非常严重并且非常着急的问题,能让咱多年资深工程师都无法解决的,那肯定的确是大问题,对话如下: 仔细一看,还真是64位精度浮点数...,但是咱触摸屏的mcgsPRO软件已经支持64位浮点数了啊,所有浮点型变量,都是按照精度浮点来处理的: 但在modbusRTU驱动内,的确如客户所说,没有64位精度浮点数的选项,是个大问题。...仔细想想,肯定又是开发部那群xx(文明用语,此处缺省为小伙伴)在偷懒,64位精度浮点数目前应用不广,用得人少,所以就偷懒没做,但现在不是内部批斗的时候,得先找办法解决客户现场问题。...② 好像没有第二了,没啥办法了 03结束语 既然没啥其他办法了,那咱就这样结束吧,等开发部那群小伙伴帮我支持64位精度浮点再说吧,谢谢大家支持,谢谢大家白跑一趟。...使用modbusTCP协议驱动读本机IP,直接读64位浮点数 简单来说,就是将modbusRTU读回来的数据原封不动的转给modbusTCP服务器端口,通过modbusTCP客户端来按照64位浮点数读取出来

2K50

MIPS架构深入理解2-MIPS架构体系

大多是作为MIPS64架构的可选部分-单精度对(paired-single)-出现。...MIPS32、MIPS64: 1998年,由Silicon Graphics公司分拆出来的MIPS Technologies Inc.公司制定的标准。...单精度对: 浮点单元的扩展,提供SIMD操作。每条指令可以同时操作2个单精度值。 MIPS-3D: 通常和单精度对结合使用,提供了一些指令,用于3D场景渲染时的浮点矩阵运算。...2.5.3 内存中的浮点数 内存中加载浮点数到浮点寄存器中,没有任何限制。对于32位处理器,允许加载单精度值到偶数编号的浮点寄存器中。但是,你也能够使用宏指令l.d加载精度值。...此处,又再一次体现了MIPS架构的设计理念:硬件尽量简单,辅以软件实现。编译器提供的辅助有: 加载32位立即数: 直接加载立即数。 内存加载数据: 你可以编码一个load,实现从内存中读取变量。

5.6K20
您找到你想要的搜索结果了吗?
是的
没有找到

MIPS架构深入理解3-协处理器0

2.2 读取CPU控制寄存器的指令 mfc0 d, $n # 把协处理器第n个寄存器中的值写入到通用寄存器d中 上述指令的作用是把协处理器0中的第n个寄存器中的内容读取到通用寄存器d中。...MIPS架构CPU硬件对于堆栈一无所知,所以发生异常时,无法打印堆栈中的数据。(ARM和X86硬件可以保存堆栈,所以,发生异常时,可以打印堆栈中的关键数据)。...异常返回时: 保存返回地址到EPC寄存器中。 不论是何种异常,返回时,都要恢复SR寄存器和特权等级、使能中断并消除异常带来的影响。最后eret指令返回用户程序并复位SR(EXL)寄存器。...改变到ERL模式 kuseg内存区域取指、加载和存储数据。 cache指令改变cache行 在受影响的line上取指、加载和存储数据。...为了保证安全,可以在 可以在读取CP0寄存器值的指令之前,添加ehb指令。

1.1K10

汇编语言之MIPS汇编

text la $a0,msg li $v0,4 syscall 数据定义 定义整型数据 定义Float数据 定义Double数据 定义字符串数据 用户输入 字符串输入 整型数据输入 浮点型数据输入 单精度精度...精度数(double型)在32位计算机中存储占用8字节,也就是64位,有效位数为16位,小数点后15位。...浮点寄存器 在mips中一共有32个浮点寄存器(其中包含16个精度浮点寄存器),用于单独处理浮点数 函数声明和调用 函数声明 格式123函数名: 函数体 jr ra #ra寄存器中保存着调用指令下一条代码所在的地址...内存中读取数据的宽度取决于寄存器的大小,由于32位cpu寄存器最大存储32位数据,因此lw t0表示一次性读取4个字节的数据到t0寄存器, 如果想要连续读取八个字节的数据,那么需要使用ld t0,表示一次性读取...,如果是精度,只需将结尾.s改成.d即可 mips多文件开发 在文件A中定义函数 fun: li $v0,1 li $a0,1 syscall jr $ra 在文件B中使用关键字.include

9.6K30

MIPS架构深入理解1-MIPS和RISC架构体系介绍

虽说,优雅不足以让其在残酷的市场中固若金汤,但是,MIPS架构还是以最简单的设计成为每一代CPU架构中,执行效率最快的那一个。 作为一个学术项目孵化而来的成果,简单的架构是MIPS架构商业化的需要。...每个Line不仅包含主内存读取的数据,还包括其地址信息(TAG)和状态信息。...CISC指令集架构的微处理器可以任意地址处读取一个4字节的数据,代价就是需要多花费一些时钟周期。 但是,MIPS指令集一些特殊的指令,以简化未正确对齐的地址上load和store的工作。...没有对堆栈寄存器的特定支持: 虽然,传统意义上的MIPS汇编代码确定也会定义一个寄存器作为堆栈指针寄存器,但是,硬件上没有规定那个寄存器是特定的sp寄存器。...堆栈的pop操作不符合流水线的执行,因为它要写两个寄存器(来自堆栈的数据和增加的指针值)。

7.6K21

5.9 汇编语言:浮点数操作指令

FLD 指令用于内存中读取精度浮点数(32位)或精度浮点数(64位),并将其存储到浮点栈中。FLD 指令的语法如下: FLD source 其中,source 可以是内存地址、寄存器或立即数。...将xmm0寄存器中的值存储到栈顶 fld qword ptr [esp] ; 将栈顶的值内存中装载到浮点栈中 其中,xmm0 是精度浮点寄存器,pi 是一个精度浮点常量的地址,esp 是堆栈指针寄存器...3 main ENDP END main 压栈指令同样支持变址寻址的方式,如下代码案例中我们可以通过循环将一个数组压入浮点数寄存器,其中使用FLD指令时压入一个浮点实数,而FILD则是将实数转换为精度浮点数后压入堆栈...第四种:是与整数相加,默认会将整数扩展为精度,然后在于ST(0)相加。...FDIVP指令:将堆栈上的ST1浮点数除以ST0浮点数,不同于FDIV,它还将ST0堆栈中弹出。

37220

5.9 汇编语言:浮点数操作指令

FLD 指令用于内存中读取精度浮点数(32位)或精度浮点数(64位),并将其存储到浮点栈中。FLD 指令的语法如下:FLD source其中,source 可以是内存地址、寄存器或立即数。...xmm0寄存器中的值存储到栈顶fld qword ptr [esp] ; 将栈顶的值内存中装载到浮点栈中其中,xmm0 是精度浮点寄存器,pi 是一个精度浮点常量的地址,esp 是堆栈指针寄存器...,qword ptr标记用于指示要读取的内存单元的数据大小。...int 3 main ENDPEND main压栈指令同样支持变址寻址的方式,如下代码案例中我们可以通过循环将一个数组压入浮点数寄存器,其中使用FLD指令时压入一个浮点实数,而FILD则是将实数转换为精度浮点数后压入堆栈...FDIVP指令:将堆栈上的ST1浮点数除以ST0浮点数,不同于FDIV,它还将ST0堆栈中弹出。

76230

大学课程 | 计算机系统结构

:计算机单位时间执行的指令条数 主频越高f,平均每条指令的时钟周期数CPI越少,其MIPS越高,在一定程度反映了机器的性能 MIPS很大程度的依赖指令集,它很难衡量指令系统不同机器之间的性能 用于比较相同指令系统系统...即使在同一台机器上,程序负荷不同,CPI也不同,MIPS也就受到影响——浮点运算、定点运算 MIPS还与机器的硬件实现有关 浮点运算在硬件上实现,MIPS低,性能高 浮点运算用软件实现,MIPS高,性能低...,零地址指令 60年代开始,出现了一批以堆栈寻址方式为主的堆栈计算机 堆栈对以下这些方面处理非常方便 表达式求值 子程序调用,递归,中断嵌套 块结构语言中的变量访问 堆栈计算机具有如下特点: (1)有高速寄存器组成的硬件堆栈...rm越大,数在数轴上的分布越稀,数的表示精度自然就下降 运算中的精度损失 尾数右移出机器字长,使有效数字丢失,但其不同于可表示数的精度,由于尾数基值rm取大后,对阶移位的机会和次数减少,又由于数的表示范围扩大...如果主存按位编址,则部分指令的读取需要两个周期,是机器速度明显下降。

1.9K42

『计算机的组成与设计』-计算机的算数运算

( B0-B31),将 32 个与门的输出都连接到32位目的操作数的每一位( Y0-Y31)。... B0-B31),将 32 个或门的输出都连接到 32 位目的操作数的每一位( Y0-Y31)。...折中是在精度和表示范围间进行权衡: 增加小数部分会增加精度,增加指数部分会增加表示范围。好的设计需要折中。...MIPS 的单精度浮点数(float)表示如下: 右边 1 位表示符号 之后 8 位表示指数域 在之后 23 位表示尾数域 浮点数会出现一种新的溢出: 下溢。...称为精度浮点数(double),由两个 32 位的字组成。 MIPS精度浮点数(double)表示如下: 右边 1 位表示符号 之后 11 位表示指数域 在之后 52 位表示尾数域

89920

MIPS架构深入理解11-向MIPS移植软件之编程语言

但是,你需要避免像下面的代码那样使用volatile: typedef char * devptr; volatile devptr mypointer; 本意是想告诉编译器,重新char *类型的指针处加载数值...16位int类型数据的使用 当我们16位的机器架构的程序,比如x86或者ARM等,移植到MIPS架构上时,一定要注意最大值、溢出和符号位扩展。...堆栈的使用 尽管MIPS架构缺乏对堆栈的支持,但是MIPS-C编译器还是实现了一个常规的栈结构,主要就是按照某种约定,指定通用寄存器作一些特殊的用途,比如使用哪几个寄存器传递函数参数,使用哪个寄存器作为...话虽如此,不要想当然的认为,堆栈就可以安全的移植了。必要的时候,使用下面的2个方法-宏和库函数-解决堆栈的问题: stdargs: 使用头文件,定义宏,允许函数接收可变参数。...有些编译器实现alloca()为内嵌函数,来扩展堆栈;也可以使用单纯的库函数实现。但是,不要假设堆栈和其分配的内存有什么关系。

1.2K30

MIPS架构深入理解7-汇编语言理解

= t1) break; } return (t0 - t1); } 在这个初始版的strcmp实现函数中,每次迭代过程需要执行2个if语句和2个读取内存操作(...这每一个操作会产生一个延时点,比如说读取内存时,其它指令无法读取内存,但是可以在CPU上执行。而在这个while循环中,却没有足够的不需要分支预测和存取内存的操作填充这个时间段的CPU执行。....set mipsn:n,是一个0到5的数字,或是数字32或64。指定使用的指令集。 标签1: 同其它汇编语言一样,就是一个程序调转的地址别名。...强烈建议使用MIPS惯用寄存器命名。但你需要包含头文件mips/regdef.h;如果选择直接使用通用目的寄存器名称,则使用$3这之类的命名方式。通用寄存器的编号0-31。...另外,堆栈是系统地址空间非常重要的区域。但是,汇编器一般无法像.text或.data区域那样,控制堆栈。通常,需要运行的程序对堆栈进行初始化。

3.2K20

清华学霸直博简历火了!CPU、操作系统、编译器全自主写,刘知远点赞

除了rCore on MIPS这个项目外,Miskcoo简历中另一个受到好评的项目经历是“NonTrivialMIPS - 十级流水发射 MIPS 处理器”,这是清华计算机系团队在第三届 “龙芯杯”...清华计算机系学生代表队设计并实现了发射 10 级流水线 CPU,支持运行最新版 Linux 内核,启动 X11 图形界面,这在大赛历史上属于首次。...我们自己实现了一个十级发射顺序 MIPS32 处理器,包含 32 位浮点单元和一个 AES 加速单元。在其上自行设计了 SoC 同时移植了 Linux 操作系统。...Github: https://github.com/miskcoo/nontrivial-mips TrivialMIPS - 五级发射顺序 MIPS32 处理器 (with:陈晟祺,姚沛然) 这是大三上学期组成原理...有需要代码可以联系我) Mandelbrot-Render,一个高精度 Mandelbrot 渲染器。 SimpleTomasulo - Tomasulo 算法模拟器。

1.5K30

中大 软院 2015级 计组期末复习课

课堂考点归纳 求总CPI C语言与MIPS语言相互转换 较简单,比书上简单。...偏移量 存储器访存格式 大端小端判断 浮点数 graph LR A(十进制定点小数 原码)--> |正数取反+1 规格化| B(规格化二进制定点小数 补码) F(十进制实数) -->|标准化|C(单精度浮点数...) C --> F D(十进制整数)-->|正数取反+1|E(二进制整数补码) 操作 溢出检测 检测方法不作要求 十进制与单精度相互转换 浮点数相加 可不用标准化表示 流水线 数据冒险———...程序循环、堆栈等是产生时间局部性的原因。 空间局部性(Spatial Locality):在最近的将来将用到的信息很可能与现在正在使用的信息在空间地址上是临近的。

40310

清华学霸直博全自主写CPU、操作系统、编译器!刘知远点赞!(附链接)

除了rCore on MIPS这个项目外,Miskcoo简历中另一个受到好评的项目经历是“NonTrivialMIPS - 十级流水发射 MIPS 处理器”,这是清华计算机系团队在第三届 “龙芯杯”...清华计算机系学生代表队设计并实现了发射 10 级流水线 CPU,支持运行最新版 Linux 内核,启动 X11 图形界面,这在大赛历史上属于首次。...我们自己实现了一个十级发射顺序 MIPS32 处理器,包含 32 位浮点单元和一个 AES 加速单元。在其上自行设计了 SoC 同时移植了 Linux 操作系统。...Github: https://github.com/miskcoo/nontrivial-mips TrivialMIPS - 五级发射顺序 MIPS32 处理器 (with:陈晟祺,姚沛然) 这是大三上学期组成原理...有需要代码可以联系我) Mandelbrot-Render,一个高精度 Mandelbrot 渲染器。 SimpleTomasulo - Tomasulo 算法模拟器。

2.5K40

使用 WPADPAC 和 JScript在win11中进行远程代码执行3

将变量 1 和变量 2 重叠的效果是,我们可以将变量 1 的类型(第一个 WORD)更改为 5(精度)、8(字符串)或 0x400C(指针)。...这种布局为我们提供了几个非常强大的利用原语: 如果我们写入一些包含指向变量 1 的指针的变量,我们可以通过将变量 1 的类型更改为精度 (5) 并将其读出来公开该指针的值 我们可以通过在该地址伪造一个字符串来公开...我们可以通过首先将对应于我们要读取的地址的精度值写入变量 1,然后将变量 1 的类型更改为字符串 (8) 来完成此操作。....dll的导入表读取kernelbase.dll的地址 扫描 kernel32.dll 寻找我们需要的 rop gadgets kernel32.dll的导出表中获取WinExec的地址 泄漏堆栈地址...,如上一节所述 准备 ROP 链并将其写入堆栈最接近我们泄露的堆栈地址的返回地址开始。

2K310

别人家的孩子!CPU、操作系统、编译器全自主写,刘知远点赞!

除了rCore on MIPS这个项目外,Miskcoo简历中另一个受到好评的项目经历是“NonTrivialMIPS - 十级流水发射 MIPS 处理器”,这是清华计算机系团队在第三届 “龙芯杯”...清华计算机系学生代表队设计并实现了发射 10 级流水线 CPU,支持运行最新版 Linux 内核,启动 X11 图形界面,这在大赛历史上属于首次。...我们自己实现了一个十级发射顺序 MIPS32 处理器,包含 32 位浮点单元和一个 AES 加速单元。在其上自行设计了 SoC 同时移植了 Linux 操作系统。...Github: https://github.com/miskcoo/nontrivial-mips TrivialMIPS - 五级发射顺序 MIPS32 处理器 (with:陈晟祺,姚沛然) 这是大三上学期组成原理...有需要代码可以联系我) Mandelbrot-Render,一个高精度 Mandelbrot 渲染器。 SimpleTomasulo - Tomasulo 算法模拟器。

1K40
领券