-mthumb用于指定生成thumb指令集的代码,这是一个可选参数,默认情况下,arm-none-eabi-GCc会优先产生ARM指令集的代码。-mthumb-interwork允许编译器进行ARM指令和Thumb指令的相互调用,默认情况下,这个选项是未允许的。 其他选项(-std=xxx -Wall -On -g -gdwarf-2 -fdata-sections -ffunction-sections)-std=xxx用...
"-mthumb-interwork”编译选项生成的目标文件就是thumb的,但是可以被其他的ARM的目标文件交叉调用。 一般如果工程中需要一部分文件目标文件编译为ARM指令,一部分目标文件编译为Thumb指令时, 可以在这两部分的编译选项中都加入"-mthumb-interwork”选项,这样就可以在后面将这两部分链接为一个可执行文件,例如: arm-elf-g...
在使用 clangd 进行代码提示时,如果遇到报错 Unknown argument: '-mthumb-interwork',这通常意味着 ...
mthumb: 生成 Thumb 指令集的机器码。 std=gnu99: 使用 GNU C 99 标准。 nostartfiles: 不使用标准启动文件。 mapcs-frame: 生成 ARM Procedure Call Standard 框架。 ffunction-sections: 将每个函数放置在单独的段中,以便在链接时可以进行优化。 fdata-sections: 将每个全局变量放置在单独的段中,以便在链接时...
"${TOOLCHAIN_DIR}/${TOOLCHAIN_NAME_HEAD}g++${TOOLCHAIN_EXT}") set(CMAKE_ASM_COMPILER "${TOOLCHAIN_DIR}/${TOOLCHAIN_NAME_HEAD}gcc${TOOLCHAIN_EXT}") # 4. 设置编译的初始化选项,参数可以自定义 set(CMAKE_C_FLAGS_INIT "-mthumb -g3 -Wall") set(CMAKE_CXX_FLAGS_INIT "-mthumb -g3 -...
1. -mthumb 和 -mthumb-interwork "-mthumb”的意义是:使用这个编译选项生成的目标文件是Thumb指令的,目前还没有发现GNU编译器中有哪一个选项可以指定生成的目标文件是thumb-2的。 相对应的,“-marm“的意义是,使用编译选项生成的目标文件是ARM指令的。
配置GCC编译器:在进行编译器配置时,需要确保GCC已经正确地配置为支持thumb-2指令集。可以通过设置编译器选项来启用thumb-2指令集,例如使用"-mthumb"选项。 编写代码:使用GCC进行开发时,可以使用C或C++等编程语言编写代码。在编写代码时,可以利用thumb-2指令集提供的优化特性,例如更紧凑的指令编码和更高的代码密度。
-mthumb-interwork 产生支持THUMB和ARM指令集间调用的代码。不使用此开关,在一个程序里就不能可靠地使用两个指令集。缺省情况下是“-mno-thumb-interwork”,因为使用“-mthumb-interwork”开关产生的代码稍微大一些。 -mtpcs-frame 对所有非叶函数都生成一个遵从Thumb程序调用标准的堆栈帧。(叶函数是不调用任何其它函...
使用-mthumb选项编译的代码可以在支持Thumb指令集的ARM处理器上运行。 5. -mthumb-interwork 这个选项用于指定在Thumb指令集和ARM指令集之间进行交叉调用时是否进行自动转换。默认情况下,编译器将在需要时自动插入指令来转换指令集,确保不同指令集之间的函数调用能够正确进行。可以使用-mno-thumb-interwork选项禁用自动转换...
-mthumb-interwork 支持在thumb和arm之间切换,否则将不能在同一程序可靠地切换,次选项将使程序稍稍增大,此选项默认为-mno, -mtune=name 类似-mcpu,不同之处在于不指定实际使用的目标处理器类型以及限制可以使用的指令,它指定gcc应该按照指定的目标机类型优化代码的性能,但继续基于-mcpu指定的CPU来选择所生成的指令...