关于段错误的一个问题?
我想实现一个程序,把命令行参数显示到屏幕上,具体的汇编程序如下:[code]#comm.s
.section .data
cmd_tb1: #分配内存,存放执行命令行参数的指针,最多有可存放十个
.rept 10
.long 0
.endr
.section .text
.globl _start
_start:
movl (%esp), %ecx
cmpl $10, %ecx #如果命令行参数大于10,则退出。
jg _exit
movl $1, %esi
movl $0, %edi
store_loop: #复制命令行参数指针到cmd_tb1
movl (%esp, %esi, 4), %eax
movl %eax, cmd_tb1( , %edi, 4)
incl %esi
incl %edi
loop store_loop
movl %edi, %ecx
movl $0, %esi
print_loop:
movl cmd_tb1(, %esi, 4), %eax
pushl %eax
call puts #调用C函数显示
popl %eax
incl %esi
loop print_loop
_exit:
pushl $0
call exit[/code]
编译和联接都没有出现问题,具体的命令如下:
[code]as -o comm.o comm.s
ld -o comm -dynamic-linker /lib/ld-linux.so.2 -lc comm.o[/code]
可是在运行的时候确提示段错误,不知道错在哪里,望高手指点。
我的gcc版本为:4.1.2 20070502 (Red Hat 4.1.2-12)
回复 1# 的帖子
搞汇编?太强了...页:
[1]
