代码
这段代码的功能是读取命令行参数的内容并输出
.text
.globl _start
_start:
popq %rsi
vnext:
popq %rsi
testq %rsi, %rsi
jz exit
movq %rsi, %rbx
xorq %rdx, %rdx
strlen:
movb (%rbx), %al
incq %rdx
incq %rbx
testb %al, %al
jnz strlen
movb $10, -1(%rbx) #10是换行键
movq $1, %rax # 系统调用号(sys_write)
movq $1, %rdi # 文件描述符(stdout)
syscall
jmp vnext
exit:
movq $60,%rax
movq $0,%rdi
syscall
以后我会补上注释的quq
运行结果
试图运行可执行文件的时候,一开始一直提示Segmentation fault (core dumped)错误,确认代码没有问题之后还是有这个提示。
所以上stackoverflow以及其他各种上找了找怎么解决,甚至开始学习gdb的使用方法(Linux下如何使用gdb调试 这篇写得不错可以mark住)。但是最后是阴差阳错输入了
ulimit
一句之后,就好了!就好了!
我也不知道为什么
附上其他
1. Segmentation fault (core dumped)的解决
2.Segmentation fault (core dumped)的解决(2)
3.StackOverFlow上的回答