深入理解浮点运算:从表达式转换到SSE指令集应用
在计算机编程中,浮点运算的处理是一个重要的环节。本文将详细介绍浮点运算相关的指令和操作,包括fstsw和fnstsw指令、浮点表达式转换为汇编语言的方法,以及SSE浮点运算的相关内容。
1. fstsw和fnstsw指令
fstsw和fnstsw指令用于将FPU状态字存储到16位内存位置或AX寄存器,具体指令如下:
fstsw ax
fnstsw ax
fstsw mem16
fnstsw mem16
这些指令的特别之处在于,它们能将FPU值复制到x86 - 64通用寄存器(具体为AX),目的是让CPU通过sahf指令轻松测试条件码寄存器。fstsw和fnstsw的区别与fclex和fnclex的区别类似。
2. 浮点表达式转换为汇编语言
由于FPU寄存器组织与x86 - 64整数寄存器集不同,涉及浮点操作数的算术表达式翻译与整数表达式有所不同。FPU使用后缀表示法(也称为逆波兰表示法,即RPN)进行算术运算。
2.1 后缀表示法的优势
- 无需临时变量 :后缀表示法在翻译表达式时更方便,因为无需担心分配临时变量,它们会自动存储在FPU栈中。
- 无需括号 :后缀表示法不需要括号,简化了表达式的表示。
以下是一些中缀表示法和后缀表示法的转换示例:
| 中缀表示法 | 后缀表示法 |
超级会员免费看
订阅专栏 解锁全文
2万+

被折叠的 条评论
为什么被折叠?



