如何在软件中模拟浮点运算? [关闭]

2023-11-29

当CPU没有(或有问题)浮点单元时,软件如何执行浮点运算?例如 PIC、AVR 和 8051 微控制器架构。


“效仿”在 PIC、AVR 和 8051 上下文中,“浮点”是错误的术语。仿真是指在具有 FPU 选项但并非所有部件都包含 FPU 的架构上对 FPU 硬件进行仿真。这允许包含浮点指令的二进制文件在没有 FPU 的变体上运行。在使用时,FPU 仿真被实现为无效指令异常处理程序;当遇到FPU指令但不存在FPU时,会发生异常,处理程序读取指令值并在软件中实现操作。

但是,您列出的架构均未定义 FPU 或 FPU 指令,因此无法模拟任何内容。相反,在这些情况下,浮点运算完全在软件中实现,编译器生成代码以根据需要调用浮点例程。例如表达式x = y * z ;将生成相当于函数调用的代码x = _fmul( y, z ) ;。事实上,如果您查看包含浮点运算的构建的链接器映射输出,您可能会看到例程符号名称,例如_fmul, _fdiv等等 - 这些功能是固有的给编译器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在软件中模拟浮点运算? [关闭] 的相关文章

  • 是否可以用 Rust 编写 Quake 的快速 InvSqrt() 函数?

    这只是为了满足我自己的好奇心 是否有这样的实现 float InvSqrt float x float xhalf 0 5f x int i int x i 0x5f3759df i gt gt 1 x float i x x 1 5f x
  • 整数转浮点数

    这段代码的工作原理 posToXY Float gt Float gt Integer posToXY a b do let y a b round y 但这不起作用 posToXY Integer gt Integer gt Intege
  • 如何处理 PHP 中浮点数的奇怪舍入

    众所周知 浮点运算并不总是完全准确 但是如何处理它的不一致之处呢 As an example in PHP 5 2 9 this doesn t happen in 5 3 echo round 14 99225 4 14 9923 ech
  • PostgreSQL round(v numeric, s int)

    Which method http en wikipedia org wiki Rounding Tie breakingPostgres 吗round v numeric s int http www postgresql org doc
  • TSQL - 生成文字浮点值

    我理解比较浮点数时遇到的许多问题 并对它们在这种情况下的使用感到遗憾 但我不是表格作者 只有一个小障碍需要克服 有人决定使用浮点数 就像您期望使用 GUID 一样 我需要检索具有特定浮点值的所有记录 sp help MyTable Colu
  • GCC C++ (ARM) 和指向结构体字段的 const 指针

    假设有一个简单的测试代码 typedef struct int first int second int third type t define ADDRESS 0x12345678 define REGISTER type t ADDRE
  • 如何进行带有偏差的浮点舍入(始终向上或向下舍入)?

    我想以偏置舍入浮动 要么总是向下 要么总是向上 代码中有一个特定的点 我需要这个 程序的其余部分应该像往常一样四舍五入到最接近的值 例如 我想四舍五入到最接近的 1 10 倍数 最接近 7 10 的浮点数约为 0 69999998807 但
  • 为什么 printf 使用浮点和整数格式说明符打印随机值

    我在64位机器上写了一个简单的代码 int main printf d 2 443 所以 这就是编译器的行为方式 它将识别第二个参数为双精度型 因此它将在堆栈上压入 8 个字节 或者可能只是在调用之间使用寄存器来访问变量 d需要 4 字节整
  • Python中Decimal类型的澄清

    每个人都知道 或者至少 每个程序员都应该知道 http docs oracle com cd E19957 01 806 3568 ncg goldberg html 即使用float类型可能会导致精度错误 然而 在某些情况下 精确的解决方
  • 使用 MacLaurin 展开的 Fortran Sine 函数的微小差异

    我正在用 Fortran 创建一个程序 它接受以弧度表示的 sin x 的 x 然后是要计算的项数 这是我的程序 Sine value using MacLaurin series program SineApprox implicit n
  • 嵌入式linux编写AT命令

    我在向 GSM 模块写入 AT 命令时遇到问题 当我使用 minicom b 115200 D dev ttySP0 term vt100 时它工作完美 但我不知道如何在 C 代码中做同样的事情 我没有收到任何错误 但模块对命令没有反应 有
  • 如何在Python中找到低精度浮点值的原始文本表示?

    我遇到了显示问题floatPython 中的值 从外部数据源加载 它们是 32 位浮点数 但这也适用于较低精度的浮点数 以防万一 这些值是由人类在 C C 中输入的 因此与任意计算值不同 与round数字很 可能not预期的 但不能被忽略
  • 嵌入式系统:使用汇编语言时的内存布局

    根据我的理解 嵌入式系统运行机器代码 有多种方法可以生成此代码 一种是用 C 等高级语言编写程序 然后使用编译器获得这样的代码 另一种方法是用汇编语言为该嵌入式系统编写指令 并使用汇编器将其转换为机器代码 现在我们得到了加载到系统并执行的机
  • 将浮点型转换为双精度型

    我正在尝试转换Single to Double同时保持原来的价值 我找到了以下方法 Single f 5 2F Double d1 f 5 19999980926514 Double d2 Double Parse f ToString 5
  • 尽管浮点数相同,但它们并不相等? [复制]

    这个问题在这里已经有答案了 下面的程序输出This No is not same 当两个数字相同时为什么会这样做 void main float f 2 7 if f 2 7 printf This No is same else prin
  • 如何准确判断 double 是否为整数? [复制]

    这个问题在这里已经有答案了 具体来说 在 Java 中 我如何确定double是一个整数 为了澄清 我想知道如何确定 double 实际上不包含任何分数或小数 我主要关心的是浮点数的性质 我想到的方法 以及我通过谷歌找到的方法 基本上遵循以
  • 为什么多次相加0.1仍然无损?

    我知道0 1十进制数不能用有限的二进制数精确表示 解释 http www exploringbinary com why 0 point 1 does not exist in floating point so double n 0 1会
  • GLSL 中统一浮点行为和常量浮点行为的不同

    我正在尝试在 GLSL 中实现模拟双精度 并且观察到一种奇怪的行为差异 导致 GLSL 中出现细微的浮点错误 考虑以下片段着色器 写入 4 浮点纹理以打印输出 layout location 0 out vec4 Output unifor
  • 在哪里可以找到有关嵌入式 C++ 的信息?

    我想查找有关 嵌入式平台中的 C 编程 的信息 我用谷歌搜索 但无法找到有关该主题的足够信息 我到底想找到的是 C 在嵌入式环境中到底如何有用 并带有详细的描述和示例 如果可用 如果我能得到 任何人都可以建议任何链接或任何免费电子书下载吗
  • 如何检测跨平台浮点行为的差异

    我可以执行哪些检查来确定两个硬件平台的浮点行为有何差异 验证 IEEE 754 合规性或检查已知错误可能就足够了 以解释我观察到的输出差异 我通过 proc cpu 查看了 CPU 标志 两者都声称支持 SSE2 我在看 https www

随机推荐

  • 是否有可能以这种方式使用 AGG 函数进行 SQL 查询?

    假设我有以下聚合函数 AGG1 AGG2 AGG3 AGG4 是否可以像这样编写有效的 SQL 以与数据库无关的方式 SELECT COL1 COL2 AGG1 param1 AGG2 param2 FROM SOME TABLES WHE
  • Laravel 4 Ajax 检查以包含 XMLHttpRequest (来自 Magnific Popup)

    Using 这个问题的代码 extends layouts isset ajax ajax master 检查 Ajax 它适用于常规 Ajax 页面加载 但不适用于使用弹出窗口 在本例中 我使用 Magnific Popup 的 Ajax
  • 序列元组

    我想将一系列类存储到一个元组中 并将该序列声明为另一个类的成员 template
  • HQL 加入 Grails:Part Deux

    这是我问的问题的延伸here 我有这样的关系 class Foo static hasMany bars Bar class Bar Has nothing to tie it back to Foo or Thing class Thin
  • EF7 beta5:外键返回空值

    我使用 ASP NET5 和 Entity Framework 7 0 0 beta 5 创建了一个 API 我创建了模型 DbContext 和存储库 当我尝试从数据库检索数据时 我得到了除外键数据之外的所有数据 外键值始终为空 数据库上
  • Google Apps 脚本 - 可能的图表类型

    我是 Google Apps 脚本的新手 所以我只是在探索我想要实现的目标是否可能 我需要从 Google 表单中检索并在单独的文档中显示根据每个单独表单提交的数据创建的图表 我知道这是可以做到的 我遇到的问题是我想要的图表类型似乎不可用h
  • 检查提交表单时至少选中一个复选框

    我有一个由复选框字段组成的表单 现在在表单提交时我们应该检查是否至少选中了一个复选框 html代码
  • Linux 在编译时随机删除了我的文件,我该怎么办?

    gcc L root Desktop Wall o prog3 c pthread lcopy usr lib gcc x86 64 linux gnu 7 x86 64 linux gnu Scrt1 0 In function star
  • Office 365 Rest API - 检索纯文本电子邮件

    目前是否可以使用 Office 365 Rest API 来检索电子邮件的纯文本部分 从 API 文档中可以看出 Body 对象包含 ContentType 字段 该字段可以是Text or HTML https msdn microsof
  • 模拟 Hibernate 会话

    我试图模拟休眠会话 这是我尝试过的代码片段 Before public void setUp campaignModel DraftTestHelper buildDraftModel if sessionFactory null Syst
  • 每次 ajax 调用后不同的 Facebook 评论框

    我的问题是这样的 我有一个网页 每次用户单击按钮时该网页都会发生变化 标题已更新 图表 鉴于页面现在有不同的内容 我希望有一个不同的评论部分 但是 url 是完全相同的 因为所有内容都是 ajax 加载的 所以我想知道是否也可以生成一个新的
  • FormData 无法在 Internet Explorer 中工作?

    function uploadPhoto file if file file type match image if file postStatus else return var fd new FormData fd append ima
  • get_path() 从 matplotlib.patches 返回一个 Circle

    有谁知道是什么get path of a Circle from matplotlib patches回报 这get path 圆的返回值与原始圆不同 这可以从下面代码的结果中看出 从附图中可以看出 原来的橙色圆圈与图中的蓝色圆圈完全不同
  • ffmpeg 中的 mp3 音频 + 背景.jpg = 结果.mp4

    将视频转换为 mp4 以上传到 YouTube 时遇到问题 我已使用以下命令转换为 avi 格式 ffmpeg y i background jpg i deepmix mp3 c a copy result avi 但是当我将其上传到 y
  • 如何使用 JDBC 调用 PostgreSQL 存储过程

    我正在使用 postgresql 并且创建了一些存储过程 现在我想通过jdbc访问存储过程并处理结果 存储过程的结果是整数或表 我发现了以下内容 CallableStatement upperProc conn prepareCall ca
  • 如何将两个打包的 64 位四字加载到 128 位 xmm 寄存器中

    我有两个 UInt64 即 64 位四字 整数 它们与 8 字节对齐 sizeof UInt64 边界 如果这对任何事情有用的话 我也可以将它们对齐到 16 字节 它们被挤在一起 所以它们在内存中是并排的 我如何将它们加载到 xmm 寄存器
  • substr() 未按预期工作

    我只是想提取日期year month and day分开 以便我可以按照我的意愿使用它 我将当前日期存储在 today并使用substr 从中提取字符串 但我从我所做的事情中得到了一些奇怪的行为 我当前的代码 today date Y m
  • iOS 自定义导航栏后退按钮标题在点击时消失

    你好 StackOverflow 社区 我有一个相当奇怪的情况 导航控制器的导航栏上的自定义后退按钮在交互时消失 一些附加信息是我的代码没有使用 Storyboard 而是使用 UIKit 包括 UI 在内的所有内容都是以编程方式构建的 这
  • 如何在另一种方法中使用一种方法的“返回”值

    我目前正在开发这个玩高低骰子游戏的项目 我被困在如何使用返回的char from getHighLow和返回的int from getBet and getRoll in determineWinnings 这是我目前学习 Java 的第一
  • 如何在软件中模拟浮点运算? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 当CPU没有 或有问题 浮点单元时 软件如何执行浮点运算 例如 PIC AVR 和 8051 微控制器架构 效仿 在 PIC AVR 和 8051 上下文中 浮点 是错误的术语