• 龙芯杯编译文件学习记录


    /inst/make

    • 代码
    srcs = $(wildcard *.S)
    objs = $(patsubst %.S, %.o, $(srcs))
    
    $(TOPDIR)/libinst.a: $(objs)
    	$(CROSS_COMPILE)$(AR) -cr  $@ $?
    
    clean:
    	rm -f *.o *.a *.s
    
    #print:
    #	@echo $(srcs)
    #	@echo $(objs)
    
    -include $(TOPDIR)/rules.make
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 解释
      这段代码看起来是一个Makefile,用于构建一个目标文件(libinst.a)以及清理和包含一些规则。让我为您逐行解释:
    1. srcs = $(wildcard *.S):这一行使用wildcard函数查找当前目录中所有以.S为扩展名的汇编语言源文件,并将它们的文件名列表存储在srcs变量中。

    2. objs = $(patsubst %.S, %.o, $(srcs)):这一行使用patsubst函数将srcs中的.S文件扩展名替换为.o,从而得到相应的目标文件列表,这些目标文件将在后续步骤中被构建。

    3. $(TOPDIR)/libinst.a: $(objs):这是一个规则,表示libinst.a是依赖于objs中列出的所有目标文件的。这意味着要构建libinst.a,必须首先构建所有列出的目标文件。

    4. $(CROSS_COMPILE)$(AR) -cr $@ $?:这是构建libinst.a的命令。它使用了Makefile中定义的变量CROSS_COMPILEAR,并将所有依赖项($?)打包成一个静态库文件libinst.a

    5. clean::这是一个伪目标(phony target),用于清理生成的文件。通过运行make clean命令,可以删除所有生成的.o.a.s文件。

    6. rm -f *.o *.a *.s:这是clean目标的命令,它会删除当前目录中的所有.o.a.s文件。

    7. -include $(TOPDIR)/rules.make:这行代码用于包含名为rules.make的外部Makefile规则文件。-include命令允许包含文件,如果文件不存在也不会报错。这通常用于将一些通用的规则包含到当前Makefile中。

    总结一下,这个Makefile用于构建一个静态库文件libinst.a,该库文件的依赖项是通过将.S文件编译成.o文件来得到的。还包括了一个清理规则,用于删除生成的文件,并可以包含外部的规则文件rules.make

    指令格式

    在这里插入图片描述
    例如:
    ADD指令
    在这里插入图片描述

    • 汇编格式:ADD rd,rs,rt
      将寄存器rs的值与寄存器rt的值相加,下结果写入寄存器rd中。
  • 相关阅读:
    摩尔信使MThings的设备高级参数
    抽象类和接口
    基于 Debian 稳定分支发行版的Zephix 7 发布
    类的构造函数执行顺序
    JAVA面试题整理《微服务篇》三
    AQS源码解析 7.共享模式_CyclicBarrier重复屏障
    Java并发编程学习十四:AQS框架
    rqt_publisher报错/publisher_widget.py“, line 105, in _update_thread_run
    Gradle系列【4】Project对象
    高性能系统架构设计之:多级缓存
  • 原文地址:https://blog.csdn.net/qq_46264636/article/details/133556999