assembly - 使用特定寄存器时获取浮点异常
问题描述
执行时我有以下代码我看到浮点异常
.section .data
var1:
.int 20
.section .text
.globl _start
_start:
movl $var1, %edx
movl (%edx), %eax
movl $5, %ecx
div %ecx
movl %eax, %ebx
movl $1, %eax
int $0x80
当我执行上面的代码时,我得到浮点异常
../../bin/a49
Floating point exception (core dumped)
但是在上面的代码中,如果我将存储 var1 地址的寄存器从 edx 更改为 ecx,它会按预期工作
.section .data
var1:
.int 20
.section .text
.globl _start
_start:
movl $var1, %ecx
movl (%ecx), %eax
movl $5, %ecx
div %ecx
movl %eax, %ebx
movl $1, %eax
int $0x80
当我执行上述代码时,我看不到 FPE。
$ ../../bin/a49
$ echo $?
4
我无法理解上述行为。
解决方案
推荐阅读
- autodesk-forge - Autodesk 用户管理 API
- javascript - 当我最小化窗口时,如何控制应该显示图像的哪些部分?
- python - 如何返回字符串向量匹配的numpy矩阵行的索引?
- python - Python 3.7.3 路径和 VS 代码冲突
- python - 如何使用 AWS CLI 创建 python AWS Lambda 函数?
- javascript - 如何从 php 中的 soundcloud 剧集获取最新剧集?
- php - 如何根据 ID 回显 WordPress 图像
- snapchat - Snapkit 中的friendUserId 是什么?
- r - 使用 R 从论坛抓取网页,如何删除以前用户的引用并导航到下一页?
- python-3.x - 为什么我无法在 Mac 上显示 Tkinter Python 中按钮的背景颜色?