如何解决汇编语言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 举报,一经查实,本站将立刻删除。