码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • nasm用c语言调用汇编输出所有的函数参数


    先写汇编文件

    global print //对外的符号

    extern printf //printf函数extern 过来

    print:

    push rax; //因为下面要使用rax寄存器,所以保存下

    push rdi //保存rdi寄存器,因为i下面调用printf会用到,rdi作为首个参数寄存器

    push rsi//rsi也要保存,作为printf的第二个参数

    mov rdi, format //传入首个参数 格式化 format

    mov rsi, rax //传入第二个参数

    xor rax, rax //书上说,可变参数的时候,这个要清0一下,不清楚为什么,试了下,不清0也没有问题

    call printf //调用printf函数

    pop  rsi //恢复寄存器rsi

    pop  rdi //恢复寄存器rdi

    pop  rax //恢复寄存器rax

            ret //return

    format: db "args value is %d", 10, 0 //定一个字节串,10是换行符,0是字符串结束符号

    nasm -felf64 print_args.asm //这是编译命令

    下面写个c语言代码调用

    #include <stdio.h>

    extern int print(int value);

    int Test(int a, int b, int c, int d, int e, int f)

    {

        print(a);

        print(b);

        print(c);

        print(d);

        print(e);

        print(f);

        return 0;

    }

    int main()

    {

        Test(10, 20, 30, 40, 50, 60);

        return 0;

    }

    编译命令gcc -g -o print print.c print_args.o -no-pie

    test# ./print

    args value is 10

    args value is 20

    args value is 30

    args value is 40

    args value is 50

    args value is 60

    这里注意,传输参数默认是用了6个寄存器,rdi, rsi, rdx, rcx, r8, r9

  • 相关阅读:
    最强大脑(4)
    秋招过半零Offer怎么办?
    Threejs阴影问题
    spring boot英语在线学习系统毕业设计-附源码211714
    【11.2】【VP】Codeforces Round #727 (Div. 2)
    『Element Plus の 百科大全』
    3D数据导出工具HOOPS Publish:3D数据查看、生成标准PDF或HTML文档!
    最护眼的灯是白炽灯吗?专业的护眼台灯推荐
    Java 集合中的排序算法浅析
    15【存储过程和存储函数】
  • 原文地址:https://blog.csdn.net/fantasy_ARM9/article/details/125502489
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号