c语言+nasm语言混合编程

c语言+nasm语言混合编程,第1张

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返回的。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5502345.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存