2019-08-31在Linux虚拟机上写汇编-2.处理命令行参数

代码

这段代码的功能是读取命令行参数的内容并输出

.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)错误,确认代码没有问题之后还是有这个提示。

Segmentation fault (core dumped)

所以上stackoverflow以及其他各种上找了找怎么解决,甚至开始学习gdb的使用方法(Linux下如何使用gdb调试 这篇写得不错可以mark住)。但是最后是阴差阳错输入了

ulimit

一句之后,就好了!就好了!
我也不知道为什么

ulimit

附上其他
1. Segmentation fault (core dumped)的解决
2.Segmentation fault (core dumped)的解决(2)
3.StackOverFlow上的回答

你可能感兴趣的:(2019-08-31在Linux虚拟机上写汇编-2.处理命令行参数)