标题: 请教汇编内联语句编译问题 [打印本页]

作者: stm32_1    时间: 2023-10-31 21:15
标题: 请教汇编内联语句编译问题
我在学习一款单片机的底层驱动,看到这几句代码没弄明白,有没有懂汇编的大佬帮忙解释下这几句是啥意思,还有变量T_WDG_INJ_TG_0明明没有定义,为啥会不报错呢

#define ASM_KEYWORD  __asm
#define MCAL_PUT_IN_QUOTES(x) #x
#define MCAL_FAULT_INJECTION_POINT(label)   ASM_KEYWORD(MCAL_PUT_IN_QUOTES(label:))
MCAL_FAULT_INJECTION_POINT(T_WDG_INJ_TG_0);


Snipaste_2023-10-31_21-06-01.png (14.66 KB, 下载次数: 64)

Snipaste_2023-10-31_21-06-01.png

作者: Hephaestus    时间: 2023-10-31 23:23
汇编不是高级语言,特点是不同处理器的汇编语言完全不一样,根本就不通用。你连你用的单片机型号都要隐瞒,那就不可能有人帮你了。
作者: hero_71    时间: 2023-11-1 09:05
Hephaestus 发表于 2023-10-31 23:23
汇编不是高级语言,特点是不同处理器的汇编语言完全不一样,根本就不通用。你连你用的单片机型号都要隐瞒, ...

NXP FS32K14x
作者: hero_71    时间: 2023-11-1 09:08
展开就是 __asm(T_WDG_INJ_TG_0:); T_WDG_INJ_TG_0应该在头文件里面有定义
作者: hi等你    时间: 2023-11-1 10:13
这是汇编?我一句都看不懂,怎么没有mov,jump这些指令?看来我用的是假汇编语言,惭愧了
作者: Hephaestus    时间: 2023-11-1 14:44
hi等你 发表于 2023-11-1 10:13
这是汇编?我一句都看不懂,怎么没有mov,jump这些指令?看来我用的是假汇编语言,惭愧了

这是c语言内嵌汇编,楼主还是没有说到底用的是什么,gcc、iar还是mdk,标准c语言里面没有东西,语法都不一样的。
作者: stm32_1    时间: 2023-11-2 21:10
Hephaestus 发表于 2023-11-1 14:44
这是c语言内嵌汇编,楼主还是没有说到底用的是什么,gcc、iar还是mdk,标准c语言里面没有东西,语法都不 ...

我也不知道在什么编译器用,这几句代码是恩智浦的S32K14x型号的单片机的底层驱动里面的,这个型号的单片机一般用在汽车电子领域
作者: stm32_1    时间: 2023-11-2 21:14
Hephaestus 发表于 2023-10-31 23:23
汇编不是高级语言,特点是不同处理器的汇编语言完全不一样,根本就不通用。你连你用的单片机型号都要隐瞒, ...

我没接触过汇编,不知道要报单片机型号,这个是恩智浦的S32K14x
作者: stm32_1    时间: 2023-11-2 21:20
Hephaestus 发表于 2023-11-1 14:44
这是c语言内嵌汇编,楼主还是没有说到底用的是什么,gcc、iar还是mdk,标准c语言里面没有东西,语法都不 ...

这四句代码的最后一句是在一个函数里被调用的,前面三句是我追根溯源在一个头文件里找到的,我手里有两个工程一个是IAR的,一个是S32DS的,两个都是T_WDG_INJ_TG_0在整个工程中找不到但是编译时不报错
作者: Hephaestus    时间: 2023-11-2 21:31
stm32_1 发表于 2023-11-2 21:20
这四句代码的最后一句是在一个函数里被调用的,前面三句是我追根溯源在一个头文件里找到的,我手里有两个 ...

就是个标号有什么找不到的?
作者: stm32_1    时间: 2023-11-2 21:38
Hephaestus 发表于 2023-11-2 21:31
就是个标号有什么找不到的?

就是在工程中全局搜索只有这一处出现,没有地方定义它
作者: 人中狼    时间: 2023-11-2 22:06
这个不像是汇编,还是像C,估计标号可能是在器件库,而不是代码库里
作者: Hephaestus    时间: 2023-11-2 22:50
stm32_1 发表于 2023-11-2 21:38
就是在工程中全局搜索只有这一处出现,没有地方定义它

那你查下连接生成的map文件。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1