这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 行业应用 » 汽车电子 » 【OZONE】内嵌汇编不显示问题确认

共2条 1/1 1 跳转至

【OZONE】内嵌汇编不显示问题确认

高工
2025-09-25 19:34:32   被打赏 30 分(兑奖)     打赏

【简介】

本地在使用OZONE 时加载elf 文件后发现代码中调用的  Disable_Interrupts() 函数没有被展开,第一反应是不会编译器有这么大的坑吧该函数没被编译?

image.png

后来查看了下代码这段代码的实现是通过内嵌汇编来实现的,对应代码实现如下:

    portFORCE_INLINE static void vPortRaiseBASEPRI( void )
    {
        uint32_t ulNewBASEPRI;

        __asm volatile
        (
            "   mov %0, %1                                              \n"\
            "   cpsid i                                                 \n"\
            "   msr basepri, %0                                         \n"\
            "   isb                                                     \n"\
            "   dsb                                                     \n"\
            "   cpsie i                                                 \n"\
            : "=r" ( ulNewBASEPRI ) : "i" ( configMAX_SYSCALL_INTERRUPT_PRIORITY ) : "memory"
        );
    }


思前想后感觉编译器不会有这么大的坑,想了下会不会是内嵌汇编OZONE 没有识别显示的原因、于是查看了下反汇编的窗口。

image.png

从上述的反汇编代码可知代码已经被正常编译了,是因为OZONE显示的原因,是不是OZONE 中所有的内嵌汇编都不会被显示,查看了下代码中的其他的内嵌汇编的  C 函数发现有的内嵌汇编的函数是可以被加载的,搞不清楚内嵌汇编代码的显示策略,大家遇到类似的问题可以查看下反汇编的窗口是否正常。

image.png



院士
2025-09-25 20:02:21     打赏
2楼

楼主这是在挑战编译器吗~~



共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]