Open zyq5428 opened 5 years ago
没看出来哪里指针用错了,使用time函数方式运行正常的话,有可能你的系统的time系统调用编号不是0xd
那从哪里可以查debian 9 32位的系统函数调用编号呢?系统调用向量是下面的
0x80是中断向量,不是系统调用编号 应该看你的内核版本,然后找对应版本的内核源代码 比如32位x86 3.18.6内核的系统调用列表http://codelab.shiyanlou.com/xref/linux-3.18.6/arch/x86/syscalls/syscall_32.tbl
我查了,我用的4.9.0,在./arch/x86/entry/syscalls/syscall_32.tbl目录下显示位 13 i386 time sys_time compat_sys_time
好像不是这个问题,那再仔细检查代码看哪里有疏漏造成指针错误
下面是我照着写的代码:
include
include
int main(void) { time_t tt; struct tm *t;
}
我用的系统是32位的debian,其他几个内嵌汇编的代码都正常运行,唯独这个运行错误。
hero@debian:~/kernel_analysis/code/chapter4$ vim time-asm.c hero@debian:~/kernel_analysis/code/chapter4$ gcc -m32 -o time-asm time-asm.c hero@debian:~/kernel_analysis/code/chapter4$ ./time-asm Segmentation fault