好的,所以我正在尝试创建一个有趣的程序来计算数字中的位数
我想要的:
正如我所说,一个程序计算给定数字中的位。
(例如countsbits(1)= countbits(2)= countbits(4)= 1)。
我得到了什么:
我得到了正确的输出,但现在我收到一条错误消息
“分段错误:11”。我跑了别人的程序,他们没有收到这个错误,所以显然这是我的错误。如何修改这个以便我没有出现分段错误?
我输入的命令是:
gcc -m32 -mstackrealign countbit.c countbits.s
程序编译得很好,但是当我尝试运行程序生成的a.out时,我得到了错误。有什么想法吗?
我的代码: 。文本 。数据 .globl _x
.globl _countbits
_countbits:
pushl %ebp
movl %esp,%ebp
pushl %ebx
mov $0,%edx
mov $0,%eax
mov 8(%ebp),%ebx
LOOP:
mov $1,%ecx
and %ebx,%ecx
add %ecx,%eax
shrl $1,%ebx
add $1,%edx
cmp $32,%edx
jle LOOP
pop %ebx
pop %ebp
ret
以及从C:
调用它的代码#include <stdio.h>
int foo (int x){
int p=countbits(x);
printf("The count is: %d",p);
}
main(){
int x=16;
foo(16);
}