Linux系统上64位AT&T汇编语言多个源文件计算两个数的平方

2023-12-15 05:20:49

运行程序的环境

sudo lsb_release -a看到操作系统是Ubuntu 22.04 LTS
sudo uname -r看到内核版本是5.15.0-86-generic
sudo as --version看到as的版本是2.38
sudo ld --version看到ld的版本是2.38
sudo gcc --version看到gcc版本是11.2.0
sudo gdb --version看到gdb版本是12.1

在这里插入图片描述

计算平方

exponentfunc.s里边的内容如下:

.global exponent
.type exponent,@function

.section .text
exponent:
    pushq %rbp
    movq %rsp,%rbp
    # 没有明白这行代码的作用
    subq $0,%rsp

    movq $1,%rax

    movq %rsi,-8(%rbp)

mainloop:
    mulq %rdi
    decq -8(%rbp)
    jnz mainloop

complete:
    movq %rbp,%rsp
    popq %rbp
    ret

runexponent.s里边的内容如下:

.global _start
.section .text
_start:
    movq $3,%rdi
    movq $2,%rsi
    call exponent

    movq %rax,%rdi
    movq $60,%rax
    syscall

sudo as exponentfunc.s -g -o exponentfunc.o进行汇编,sudo as runexponent.s -g -o runexponent.o进行汇编,sudo ld exponentfunc.o runexponent.o -g -o runexponent进行链接,sudo ./runexponent执行,echo $?查看返回值。
在这里插入图片描述

文章来源:https://blog.csdn.net/qq_42108074/article/details/129017340
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。