微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

汇编语言AT&T语法中的除法生成浮点异常

如何解决汇编语言AT&T语法中的除法生成浮点异常

我最近正在学习汇编语言,我正在尝试实现一个函数,该函数需要两个参数,第一个参数是一个值,第二个参数是一个长度为3的数组。然后我要存储值%16,和( / 16)%16。但是,当我实现它时,它会生成一个浮点异常:

    subq $8,%rsp
    movq $0,%r10
    movq %rdi,%rax /*store input into %rax*/
    movq $16,%rbx  /*store 16 into %rbx*/
    idivq %rbx     /*store dividend in rax,and remainder in rdx*/

    movq %rdx,(%rsi,%r10) /*store remainder in %rsi[0]*/
    addq $1,%r10 /*increase %r10 by 1*/

    idivq %rbx /*do the division again*/
    movq %rdx,%r10)
    addq $8,%rsp

当我用

进行测试时
  char buf[16];
  hex_format_byte_as_hex("h",buf);
  ASSERT(0 == strcmp(buf,"48"));

生成一个浮点异常。为什么会这样呢?有人可以指出我在功能上做错了吗?预先谢谢你。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。