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


    /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中。
  • 相关阅读:
    jolt语法
    操作系统之线程和进程
    直流电源供电 LED升压 恒流驱动IC 方案AP9193
    kubernetes资源对象介绍及常用命令(三)
    [数据分析与可视化] Python绘制数据地图4-MovingPandas入门指北
    MySQl_2
    Golang基础之关键字
    软件测试面试,一定要准备的7个高频面试题(附答案,建议收藏)
    为啥$p(w|D)=p(y|X,w)$?
    SPARK中的wholeStageCodegen全代码生成--以aggregate代码生成为例说起(9)
  • 原文地址:https://blog.csdn.net/qq_46264636/article/details/133556999