linux命令行64位编码,Linux中的进程命令行64位

本文探讨了从64位Linux汇编程序访问进程命令行的问题。作者提供了一个32位示例程序,该程序可以成功打印出程序名称的前五个字符。但在尝试将此程序转换为64位并运行时遇到了问题,程序未能输出任何内容。文中包括了两个版本的源代码,邀请读者一起找出64位程序中可能存在的错误。
摘要由CSDN通过智能技术生成

从Linux 64位汇编程序访问进程命令行时遇到问题。为了用最少的代码重现此,我在此32位程序打印出节目名称的前5个字符:Linux中的进程命令行64位

.section .text

.globl _start

_start:

movl %esp, %ebp

movl $4, %eax # write

movl $1, %ebx # stdout

movl 4(%ebp), %ecx # program name address (argv[0])

movl $5, %edx # hard-coded length

int $0x80

movl $1, %eax

movl $0, %ebx

int $0x80

该程序正在工作。当我将它翻译成64位并在Linux 64上运行时,它不会打印任何东西:

.section .text

.globl _start

_start:

movq %rsp, %rbp

movq $4, %rax

movq $1, %rbx

movq 8(%rbp), %rcx # program name address ?

movq $5, %rdx

int $0x80

movq $1, %rax

movq $0, %rbx

int $0x80

我的错误在哪里?

2010-09-16

Alex F

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值