- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我在 Ubuntu 64 位中执行以下汇编代码时,出现浮点异常(核心转储)错误:
#include <stdio.h>
int main() {
int arg1, arg2, quo, rem ;
printf( "Enter two integer numbers : " );
scanf( "%d%d", &arg1, &arg2 );
__asm__ ( "movl $0x0, %%edx;"
"movl %2, %%eax;"
"movl %3, %%ebx;"
"idivl %%ebx;" : "=a" (quo), "=d" (rem) : "g" (arg1), "g" (arg2) );
printf( "%d / %d = %d\n", arg1, arg2, quo );
printf( "%d %% %d = %d\n", arg1, arg2, rem );
return 0 ;
}
最佳答案
您当前的问题可能是由于未正确读取输入造成的。
但是您也错误地使用了内联汇编。 gcc 内联汇编是一个复杂的野兽,请确保您确实需要它,然后准备好阅读手册。
你的代码很糟糕,因为你使用 ebx
不告诉编译器。
此外,gcc 内联汇编的经验法则是,如果您曾经使用 mov
你可能做错了。如果您希望参数位于特定寄存器中,则应使用适当的约束。另一个规则是你几乎不应该使用 g
约束。
可能的修复:
__asm__("cdq; idivl %3" : "=a" (quo), "=&d" (rem) : "a" (arg1), "rm" (arg2) );
当然,您不需要内联汇编来执行除法。
<小时/>更新:看起来问题毕竟在其他地方,即您使用了 %edx
在您的代码中而不通知编译器。由于编译器不知道,因此可以自由地将其分配给除数,即替换为 %3 = %edx
。尽管编译器正确地将除数放在那里,但您所做的第一件事是零 %edx
,从而破坏除数。后来你把那个零移到 %ebx
,并尝试除以它,因此出现异常。
我的建议使用了所谓的“earlyclobber”修饰符( &
中的 =&d
),它向编译器发出信号,表明代码将在用完输入之前修改有问题的输出,因此编译器不得在那里放置任何输入。请注意,仅将其添加到原始代码中仍然不够,因为仍然剩下 %eax
和%ebx
同样的问题。
下次,请记住,您可以使用 gcc -S
请求程序集列表。 (或者您可以使用 objdump -d
或内部 gdb
进行反汇编),这样您就可以看到编译器进行了哪些替换。
关于c - x64 assembly 部门,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27929410/
我刚刚发现有关部门/领域的信息,并且有兴趣在未来的系统中使用它。 目前是否有人在生产系统中使用 sector/sphere (http://sector.sourceforge.net/)?如果有,您
此查询将返回错误(字段列表中未知列 numero_propostas)。我想要的是这样的: SELECT COUNT(*) as numero_propostas, total as t
我的代码: function ayee(){
有没有办法在事件目录中拥有多个经理和/或部门? 最佳答案 不,恐怕这是不可能的。根据标准的 Active Directory 架构,用户的“经理”属性是单值属性,例如它只能包含一个值(或不包含)。 退
当我在 Ubuntu 64 位中执行以下汇编代码时,出现浮点异常(核心转储)错误: #include int main() { int arg1, arg2, quo, rem ; pri
我有一个名为 home 的 CSS 部分,它具有某些属性,其中包含 home 部分内 anchor 标记的悬停操作,如下所示: #home a:hover { background-image:u
我正在构建一个系统,其中应该有一个包含组织、位置、部门和用户的数据库。它们按照您的预期连接起来: 每个组织可以包含一个或多个地点 每个地点(建筑物)可以包含一个或多个部门 每个部门工作一名或多名用户
这是我关于 stackoverflow 的第一个问题,所以请保持温和。我正在使用 MVC4、 Entity Framework 和 SimpleMembership 为仓库应用程序编写客户门户。仓库为
具有以下 Go 项目布局,在 lib 中具有共享库函数,在 cmd 中具有多个二进制文件,使用这些库函数并具有外部依赖性: root | lib cmd | bi
我有一个 .Net 应用程序,它通过 Microsoft 测试管理器和个人 ITestCaseResult 对在 TFS2010 中执行的测试进行后处理(手动)。实例确实有 TeamFoundatio
如何在这些路由上使用可选查询过滤器(例如“/employees?department=4”)并返回部门编号为 4 的数据 app.get("/employees", (req, res) => {
以下查询适用于一种分类法 SELECT * FROM bb_posts AS p LEFT JOIN bb_term_relationships AS r ON (p.ID = r.object_id
我想在不创建混合项目的情况下试用 Poison json 模块。 如何安装它并通过导入使其在 iex 中可用? 我已经能够将它添加到项目中,然后在进入项目目录并使用 iex -S mix 后使用它:
在部门表中,我有两个字段: documentid, which is INT jsondocument which is JSON 我执行了以下查询: INSERT INTO department V
我是一名优秀的程序员,十分优秀!