• c调用汇编


        在此记录一下c调用汇编,汇编使用的是AT&T语法。例子很简单,就是在给一个整数用汇编转换成二进制。

    c部分很简单,文件名随便,如main.c:

    #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.

     1 .global _decToBin #下划线是必须的
     2 
     3 _decToBin:
     4     pushq     %rbp
     5     movq    %rsp,%rbp
     6 
     7     movq     %rdi,-8(%rbp) #第一个参数
     8     movq     %rsi,-16(%rbp) #第二个参数
     9 
    10     movq    -8(%rbp),%rax
    11     movq    -16(%rbp),%rbx
    12     movq    $63,%rcx
    13 
    14 A:
    15     rclq     $1,%rax
    16     jnc    B
    17     movb     $49,(%rbx)
    18     jmp C
    19 B:
    20     movb     $48,(%rbx)
    21 C:
    22     addq    $1,%rbx
    23     loop A
    24 
    25     popq     %rbp
    26     ret

    AT&T语法的汇编网上有很多,俺就不介绍了。

    在mac中使用的实际是clang编译器,这又牵扯到了LLVM项目,LLVM是构架编译器(compiler)的框架系统,Apple是LLVM计划的主要资助者。

    cc链接的就是clang,Makefle文件:

    main:main.o decBin.o
    
    main.o:main.c
        
    decBin.o:decBin.s
        cc -c $<
    
    clean:
        -rm main.o decBin.o main

         在这样解释型语言横行的年代,编译语言越来越不受到重视,越来淡出我们的视线,比如汇编,已经很少很少有人学了。当然像java、python、javascript、ruby等

    自有他们的优势,没有无缘无故的热门。比如我就很喜欢python,确实很方便,有段时间导致写C和C++程序时忘记加变量类型,但不管怎样,python确实很好用,

    特别使用matplotlib库生成图表,很酷,以后我会写写的。

       但是如果我们往底层学下去特别到了OS和driver就是c外加一些汇编的天下了。UEFI中intel架构的Tiano 99%使用的是c,另外是汇编啦,以后会分享下的。

    作为程序猿还是尽量了解了解底层原理,比如哪天出来个SB语言,又出来火热的安狗手机系统,安狗软件用SB语言开发,我们又得屁颠的学它,受人摆布啊。

    俺是喜欢关于OS的东东(比如linux kernel),虽然还有很长的路要走。

      哎,为啥OS对于瓷器来说就这么费劲呢...值得深思!

        

  • 相关阅读:
    ITMS-90809
    iOS ipa 优化减小安装大小
    Xcode 常用路径
    如何查看 Assets.car 内资源
    UILabel 实现圆角
    iOS 改变 UITextField 的 Placeholder 的字体与颜色
    ATS (App Transport Security)
    iOS semaphore 使用
    macOS 自定义 NSButton
    iOS开发——设计模式那点事
  • 原文地址:https://www.cnblogs.com/wuchaofan/p/2978620.html
Copyright © 2020-2023  润新知