This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/MSP430FR5994:__never执行() don't生成交换器表

Guru**** 2595805 points
Other Parts Discussed in Thread: MSP430FR5994

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/620339/compiler-msp430fr5994-__never_executed-don-t-generate-a-switch-table

部件号:MSP430FR5994
主题中讨论的其他部件: 4428

工具/软件:TI C/C++编译器

我在中使用了以下示例

   MSP430优化C/C++编译器17.3 v.0.STS,用户指南,SLAU132O 2017-03
       Vector Generator.Vector使用__Never执行的4.1 ,第138页6.8
           例子6-8. TBIV矢量发生器


int状态;

#pragma Retain (Timer_B1)
__interrupt void Timer_B1 (void)__attribute__(__section__(".text:_ISR"));
void Timer_B1 (void)
{
开关(TB0IV)
{
案例0:
Break;/*不执行任何操作*/
案例2:
TBCCR1 +=255;
状态+=1;
中断;
案例4:
TBCCR0 = 254;
TBCCR1 =159;
状态=200;
中断;
案例6:
中断;
案例8:
中断;
案例10:
中断;
案例12:
中断;
案例14:
中断;
默认:
__never执行的();
}
}

我在两种配置中编译了此示例:
   -调试, --opt_level=0 --opt_for speed=0
   -Release, --opt_level=4 --opt_for speed=5
使用编译器:TI v 16.9 .4.LTS

与文档中所写的内容不同,不会生成切换表。
   "...对于此示例,编译器将生成一个切换表,其中TBIV的值被简单地添加到PC以跳转到相应的代码块..."

对于中断服务例程而言,生成的代码的效率真的很低。


详细信息:

 * 配置调试,--opt_level=0,--opt_for speed=0
 *     编译器版本:TI v 16.9 .4.LTS
 编译     器选项:-vmspx --data_model=restricted --opt_of_speed=0 --use_hw_bumped=F5 --include_path="C:\ti/ccsv7/CS_base/msp/include"--include_path="D:/sontex/dev/Produit/Produit/ines=4_FW_pricle_procs_procs_procs=225-compt_us_sp_sp_cnic_ps_cnicle_cnics=5= proc=env40_cnic_cnic_cnic=enp_cnic_cnic_cnic=2f_cnic=enp_cnic=enp_cnic=enp_cnic=enp_cnic=enp_cnic=enp_cnic_cnicle_cnic=enp_cnicle_cnf_cnicle_cnic=2f_cnicle_cnic=enp_cnic=enp_cnic_cnic=enp_cnf_cnic=enp=enp=22 16.9 com
 *     链接器选项:  -vmspx --data_model=restricted --opt_of_speed=0 --use_HW_bump=F5 --advice:POWER=all --advice:hw_config=all --definit=__MSP430FR5994__--definit=_msp_msp_msp_msp_msp_msp_msp_msp_msp_msp_msp_msp_msp_msp_msp_msp_msp_msp_msp_msp_msp_msp_msp_msp_msp_msp_msp_msp_msp_msp_msp_msp_msp_msp_msp_msp_-commit_com_msp_msp_com/securb_msp_msp_msp_msp_msp_msp_msp_msp_msp_msp_msp_cccp=-commit_ccc_msp_msp_msp_msp_msp_msp_ 16.9 16.9
 *     解组代码:
           Text Section .text:_isr,0x5C bytes at 0x4000
           0.4万:             TIME_B1:
           0.4万:             .text:_ISR:Timer_B1:
           0.4万:             .text:_isr:
           0.4万:0F14            PUSHM.A #1,R15
           0.4002万:1F42            MOV.W  &TB0IV_L,R15
           0.4004万:EE03
           0.4006万:0F93            TST.W  R15
           0.4008万:1424            JEQ    ($C$L3)
           0.04万a:2F83            DECD.W R15
           0.04万c:0D24            JEQ    ($C$L2)
           0.04万e:2F83            DECD.W R15
           0.401万:0124            JEQ    ($C$L1)
           0.4012万:0F3C            JMP    ($C$L3)
           0.4014万:             $C$L1:
           0.4014万:B240            MOV.W  #0x00fe,&TB0CCR0_L
           0.4016万:FE00
           0.4018万:D203
           0.0401万a:B240            MOV.W  #0x009f,&TB0CCR1_L
           0.0401万c:9F00
           0.0401万e:D403
           0.402万:B240            MOV.W  #0x00c8,状态(&S)
           0.4022万:C800
           0.4024万:001C
           0.4026万:053C            JMP    ($C$L3)
           0.4028万:             $C$L2:
           0.4028万:B250            附加W  #0x00ff,&TB0CCR1_L
           0.0402万a:ff00
           0.0402万c:D403
           0.0402万e:9253            INC. W  &state
           0.403万:001C
           0.4032万:             $C$L3:
           0.4032万:0F16            POPM.A #1,R15
           0.4034万:0013            RETI
 *
 * 配置版本,--opt_level=4,--opt_for speed=5
 *     编译器版本:TI v 16.9 .4.LTS
 *     编译器选项:-vmspx --data_model=restricted -O4 --opt_for speed=5 --use_hw_bumped=F5 --include_path="C:/ti/ccsv7/cs_base/40MSP430 "--include_path="D:/sontex/dev/produit/config/731/4 silit_cnicle_ps_procm_procm_predept_sp_sp_sp_us_sp_ps_ccup_ccupf_ccup_ccup_ccupf_proc_ prox_us_us_ccup_ccupf_ccupf_compt_ccup_ccup_ccup_ccupf_ccupf_ccupf_compt_ccupf_ccup_ccus_ccup_ccup_ccupd_ proc_ proc_ proc_ proc_ proc_ proc_ proc_ proc_ proc_j_j_web_j_web_j_j_web_gui_web_sp_sp_sp_jbf_j 16.9
 *     链接器选项:  -vmspx --data_model=restricted -O4 --opt_for speed=5 --use_HW_CCS=F5 --advice:POWER=all --advice:hw_config=all --definite_MSP430FR5994_--definit_msp_msp_msp_msp_msp_msp_crap_m=-commit_ccup_m/securv7_ccp_ccp_sp_ccup_ccp_ccp_ccup_ccp_ccup_ccup_ccup_ccup_ccup_ccup_ccup_ccup_ccup_ccup_ccup_ccup_ccup_ccup_ccup_ccup_ccup_ccup_ccup_ccup_-ccup_ccup_ccup_ccup_ccp_ccup_ccup_-ccup_cci_ccp_-ccup_ccup_ccup_cci_ccp_ccup_-cci_cci_cci_ccp_ccup 16.9 16.9
 *     解组代码:
           Text Section .text:_isr,0x5A bytes at 0x4000
           0.4万:             TIME_B1:
           0.4万:             [0].text:_ISR:Timer_B1:
           0.4万:             .text:_isr:
           0.4万:0F14            PUSHM.A #1,R15
           0.4002万:1F42            MOV.W  &TB0IV_L,R15
           0.4004万:EE03
           0.4006万:0F93            TST.W  R15
           0.4008万:1324            JEQ    ($C$L19)
           0.04万a:2F83            DECD.W R15
           0.04万c:0C24            JEQ    ($C$L18)
           0.04万e:2F83            DECD.W R15
           0.401万:0F20            JNE    ($C$L19)
           0.4012万:B240            MOV.W  #0x00fe,&TB0CCR0_L
           0.4014万:FE00
           0.4016万:D203
           0.4018万:B240            MOV.W  #0x009f,&TB0CCR1_L
           0.0401万a:9F00
           0.0401万c:D403
           0.0401万e:B240            MOV.W  #0x00c8,状态(&S)
           0.402万:C800
           0.4022万:001C
           0.4024万:053C            JMP    ($C$L19)
           0.4026万:             $C$L18:
           0.4026万:B250            附加W  #0x00ff,&TB0CCR1_L
           0.4028万:ff00
           0.0402万a:D403
           0.0402万c:9253            INC. W  &state
           0.0402万e:001C
           0.403万:             $C$L19:
           0.403万:0F16            POPM.A #1,R15
           0.4032万:0013            RETI

e2e.ti.com/.../4428.main.pp.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您提请我们注意此事。 这似乎是一个性能问题,因为编译器生成的代码没有《用户指南》中所宣传的那么高效。 我已将此问题提交给我们的跟踪系统,文件名为CodeGen-3666。 您可以使用我签名中的SDOWP链接跟踪其状态。