gpt4 book ai didi

linux - nasm 程序打印了比它应该打印的更多的参数

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:05:08 25 4
gpt4 key购买 nike

我正在编写一个简单的程序,我应该在其中获取第一个命令行参数并将其打印到标准输出。我的代码如下所示:

section .bss
env resb 100

section .text
global _start
_start:
mov rbp, rsp

add rbp, 16
mov rsi, arg
mov rsi, [rbp]

mov rax, 1
mov rdi, 1
mov rdx, 100
syscall

所以当我从 Linux 终端调用我的程序时,像这样:./program hello,我希望它打印出“hello”。但输出如下所示:helloLC_PAPER=bs_BA.UTF-8XDG_VTNR=7LC_ADDRESS=bs_BA.UTF-8SSH_AGENT_PID=1483XDG_SESSION_ID=c2LC。我知道这些是环境变量,但我不明白为什么它们会被打印出来。

感谢任何帮助。

最佳答案

实际上,如果你仔细检查,你会发现打印了 100 个字符,从内存中的“hello”地址开始。

替换

mov rdx, 100

mov rdx, 5 ; len of "hello", instead of 100

关于linux - nasm 程序打印了比它应该打印的更多的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48469396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com