汇编基础学习---浮点运算

Posted 每天进步一点点

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编基础学习---浮点运算相关的知识,希望对你有一定的参考价值。

((43 .65 / 22 ) + (76.34 * 3.1))  /  ( (12.34 * 6 ) - (140.2 / 94.21) )

 

 1 .section .data
 2 value1:
 3     .float 43.65
 4 value2:
 5     .int 22
 6 value3:
 7     .float 76.34
 8 value4:
 9     .float 3.1
10 value5:
11     .float 12.34
12 value6:
13     .int 6
14 value7:
15     .float 140.2
16 value8: 
17     .float 94.21
18 output:
19     .asciz "The result is %f \n"
20 .section .text
21 .globl _start
22 _start:
23 nop
24     finit
25     flds value1
26     flds value2
27     flds value3
28     flds value4
29     fmul %st(1), %st(0)
30     fmul %st(2), %st(0)
31     flds value5
32     fmul value6
33     flds value7
34     flds value8
35     fdivrp
36     fsubr %st(1), %st(0)
37     fdivr %st(2), %st(0)
38     subl  $8, %esp
39     pushl $output
40     call  printf
41     add $12, %esp
42     pushl $0
43     call exit

 

as -o yunsuan.o yunsuan.s
yunsuan.s: Assembler messages:
yunsuan.s:40: 错误: invalid instruction suffix for `pushyunsuan.s:43: 错误: invalid instruction suffix for `push

错误原因是,在64位系统和32位系统的as命令对于某些汇编指令的处理支持不一样造成的。

在文件.s中,包含指令:pushl  %ebp,该指令在64位系统下就编译不过

决方法:在callee.s中,在代码头部添加.code32即可

以上是关于汇编基础学习---浮点运算的主要内容,如果未能解决你的问题,请参考以下文章

汇编浮点指令

汇编,浮点运算符,fldpi,fmul等指令说明.

86/88汇编代码的执行调试

浮点 汇编指令基础知识

现代32位或64位x86汇编

20155234 2017-2018-1《信息安全系统设计基础》课程总结