linux 查看汇编堆栈,linux - 汇编程序输出未在我的Linux机器上运行 - 堆栈内存溢出...

我跟踪了此页面并编译了以下代码

; assembly program that calls a C function on 64-bit Linux

;

; int main(void) {

; printf(fmt, 1, msg1);

; printf(fmt, 2, msg2);

; return 0;

;

; Assemble in 64-bit: nasm -f elf64 -o hp64.o -l hp64.lst hello-printf-64.asm

;

; Link: ld hp64.o -o hp64 -lc --dynamic-linker /lib/ld-2.7.so

; or maybe ld hp64.o -o hp64 -lc --dynamic-linker /lib/ld-linux-x86-64.so.2

; (the "-lc" option is needed to resolve "printf")

;---------------------------------------

section .data

fmt db "%u %s",10,0

msg1 db "Hello",0

msg2 db "Goodbye",0

section .text

extern printf

global _start

_start:

mov edx, msg1

mov esi, 1

mov edi, fmt

mov eax, 0 ; no f.p. args

call printf

mov edx, msg2

mov esi, 2

mov edi, fmt

mov eax, 0 ; no f.p. args

call printf

mov ebx, 0 ; return value

mov eax, 1

int 0x80

通过

nasm -f elf64 -o hp64.o -l hp64.lst hello-printf-64.asm

ld hp64.o -o hp64A -lc --dynamic-linker /lib/ld-2.7.so

ld hp64.o -o hp64B -lc --dynamic-linker /lib/ld-linux-x86-64.so.2

可执行文件hp64A和hp64B无法运行。

$ ./hp64A

bash: ./hp64A: No such file or directory

$ ./hp64B

bash: ./hp64B: No such file or directory

两者都是可执行文件。

$ ll

total 30

drwxrwxrwx 1 ar2015 ar2015 4096 Nov 7 23:23 ./

drwxrwxrwx 1 ar2015 ar2015 4096 Nov 7 22:46 ../

-rwxrwxrwx 1 ar2015 ar2015 928 Nov 7 22:47 hello-printf-64.asm*

-rwxrwxrwx 1 ar2015 ar2015 2960 Nov 7 23:21 hp64A*

-rwxrwxrwx 1 ar2015 ar2015 2976 Nov 7 23:21 hp64B*

-rwxrwxrwx 1 ar2015 ar2015 2448 Nov 7 23:21 hp64.lst*

-rwxrwxrwx 1 ar2015 ar2015 1104 Nov 7 23:21 hp64.o*

我的机器是

$ uname -a

Linux ar2015co 4.15.0-66-generic #75~16.04.1-Ubuntu SMP Tue Oct 1 14:01:08 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

如何运行这些可执行文件?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值