栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c语言+nasm语言混合编程

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c语言+nasm语言混合编程

  • C语言中调用nasm函数

    汇编程序头部加上关键字 g l o b a l global global 将该函数声明为全局函数:

    global _asmfun
    

    C语言程序头部要加上关键字 e x t e r n extern extern

    extern void asm_fun();
    
  • 汇编中调用c语言函数

    C语言无需额外操作,在汇编程序头部加上关键字 e x t e r n extern extern ,同时,如果需要传参给C语言函数,则按照后参先入的顺序将参数压栈,再调用C语言函数,压栈过程中还要注意一个int类型参数是占四个字节。

    extern _cfun   ;引入外部函数 void cfun(int a,int b)
    xor CX,CX      ;CX=0
    push CX        ;圧入第二个参数的高两位
    push AX        ;圧入第二个参数的低两位
    push CX        ;圧入第一个参数的高两位
    push BX        ;圧入第一个参数的低两位
    call _cfun     ;调用C语言函数
    
  • 参数传递和返回值

    对于C语言函数

    int cfun(int a,int b);
    

    调用函数时会按后参先进的方式将参数压栈,即先将参数 b b b 压栈,再将参数 a a a 压栈,最后将 C S CS CS 和 I P IP IP 压栈(先 C S CS CS 后 I P IP IP )。函数的返回值是通过 A X AX AX返回的。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/509954.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号