x86 64位 汇编学习笔记二(AT&T)

本文介绍了如何使用as命令将汇编文件asprintf_data.s编译成目标文件oxxx.o,以及如何通过ld命令连接生成可执行文件并实现基本的C语言printf函数调用。着重说明了ld命令中入口点的要求。
摘要由CSDN通过智能技术生成

使用as命令对汇编文件进行汇编生成目标文件:as xxx.s -o xxx.o

使用ld命令对目标文件进行连接生成可执行文件:ld xxx.o -o xxx

注意:ld命令进行链接要求目标文件的.text段必须有一个入口点,ld默认认为_start标签对应的代码是入口点。

一:在屏幕上输出字符串The value is(调用系统号实现write函数)

data 
    printf_text:.string "The value is"
    len = .-printf_text
.text
.global _start
_start:
    movq $1,%rax
    movq $1,%rdi
    movq $printf_text,%rsi
    movq $len,%rdx
    syscall

    # 调用exit退出
    movq $60,%rax
    xor %rdi,%rdi
    syscall

 二.调用printf函数打印数据

The value is 5

.extern printf 
.data 
    printf_text:.ascii "The value is%d\n"
    len = .-printf_text
.text
.global _start
_start:
    movq $0,%rax
    movq $printf_text,%rdi
    movq $5,%rsi
    call printf

    # 调用exit退出
    movq $60,%rax
    # xor %rdi,%rdi
    syscall
as printf_data.s -o print.o
ld print.o -o print -lc -I/lib64/ld-linux-x86-64.so.2

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值