源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

c语言调用汇编的方法

  • 时间:2021-08-18 20:09 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:c语言调用汇编的方法
c部分很简单,文件名随便,如main.c:
[u]复制代码[/u] 代码如下:
#include <stdio.h> #include <stdlib.h> void decToBin(long dec,char *b); //声明外部汇编函数 int main() {           long dec=254;           char *bin=(char*)malloc(sizeof(char)*64);           decToBin(dec,bin);           printf("%s\n",bin);             free(bin);             return 0;   }   
 本人使用的是mac 64位系统,所以64bit寄存器为r开头,如:rax、rbx等。 c调用的代码如下,保存的文件名随便,如decBin.S or decBin.s.
[u]复制代码[/u] 代码如下:
.global _decToBin #下划线是必须的 _decToBin:     pushq     %rbp     movq    %rsp,%rbp     movq     %rdi,-8(%rbp) #第一个参数     movq     %rsi,-16(%rbp) #第二个参数     movq    -8(%rbp),%rax     movq    -16(%rbp),%rbx     movq    $63,%rcx A:     rclq     $1,%rax     jnc    B     movb     $49,(%rbx)     jmp C B:     movb     $48,(%rbx) C:     addq    $1,%rbx     loop A     popq     %rbp     ret
AT&T语法的汇编网上有很多,俺就不介绍了。 在mac中使用的实际是clang编译器,这又牵扯到了LLVM项目,LLVM是构架编译器(compiler)的框架系统,Apple是LLVM计划的主要资助者。 cc链接的就是clang,Makefle文件:
[u]复制代码[/u] 代码如下:
main:main.o decBin.o main.o:main.c decBin.o:decBin.s     cc -c $< clean:     -rm main.o decBin.o main
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部