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

((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 `push'
yunsuan.s:43: 错误: invalid instruction suffix for `push'

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

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

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

转载于:https://www.cnblogs.com/mysky007/p/11247740.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值