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


    /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中。
  • 相关阅读:
    汇凯金业:黄金5g工艺是什么意思
    windows server 2012 服务器打开系统远程功能
    SpringBoot篇---第二篇
    线程安全问题及关键字synchronized,volatile
    OpenHarmony如何拨打电话
    华为云云耀云服务器L实例评测|Python Selenium加Chrome Driver构建UI自动化测试实践
    Java中泛型的使用介绍(#自定义泛型 #通配符?的使用 # <? extend Person> # <? super Person>)
    图像处理--形态学处理
    RK3568驱动指南|第七期-设备树-第58章 实例分析:时钟
    stm32-SPI协议
  • 原文地址:https://blog.csdn.net/qq_46264636/article/details/133556999