部件号:LAUNCHXL-F2.8377万S
工具/软件:TI C/C++编译器
您好,
我正在尝试加快C代码的速度。 所以我试着在汇编器中写一个函数来计算我的控制单元的操作变量。 我还用c代码计算了它,并用示波器比较了计算的时间。 实际上,我认为汇编器代码比C代码快,但在我的情况下,C代码的速度更快。
首先,为什么编译器会更改我在函数中编写的assmebler代码? (我是以拆分方式查看的)
其次,是否有可能通过更改编译器的设置或类似的任何操作来使C代码仍然更快?
拆分样式中的每一行是否需要SYSCLK的1个周期,例如SYSCLK =200MHz (=5ns),而10行汇编程序代码需要50 ns? (是否有方法查看热化所需的时间?)
我需要哪些选项才能更快地获取代码?
这是我比较的代码:
C代码:
//仅定义,不是比较 float uk_1的一部分= 1.1 3.3 4.4 6.6 7.7 ; float e_k = 2.2 ; float e_k1=ASM; float e_k2=ASM; float 5.5 ; float Q1=ASM; float test_q2; //比较代码 test_asm = uk_1 +e_k*Q0+e_k2*Q1+e_a;Q1;
这是assmebler代码
// still in c extern float asmfunc_Regler_PID_1 (float uk,float e_k,float e_k1,float e_k2,float q0, 浮点Q1,浮点Q2);
//比较部件 test_asm = asmfunc_Regler_PID_1 (1.1 ,2.2 ,3.3 ,4.4 ,5.5 ,6.6 ,7.7); .global _asmfunc_Regler_PID_1 _asmfunc_Regler_PID_1: MOV32 R5H,*-SP[4];最大浮点,Wert堆栈, YF32 R5EK;5H
MOV32 R6H,*-SP[6];liest vorletzen übergabewert aus stack MPYF32 R6H,R6H,R2H;Q1*EK1 ADDF32 R5H,R5H,R0H;uk1 + Q0*EK parallel add MOV32 R7H,*-SP[8];liest vorzen übergabewert R3H stack ,R3Q2*R3H ADDF32 R6H,R6H,R5H;(uk1 + Q0*EK)+ Q1*EK1 无操作 ADDF32 R0H,R7H,R6H;((uk1 + Q0*EK)+ Q1*EK1)+ Q2*ek2| R0H ist der Rückgabewert LRETR
我的编译器设置是:
-v28 -ml -mt --float_support=fpu32 --cla_support=cla1 --vcu_support=vcu2 --tmu_support=tmu0
--opt_for speed=2 --include_path="C:/bugy/ti/ccsv6/tools/compiler/ti-CGT-C2000_C2000_SX.4.LTS/include"<xmt-block0>2000 15.12 --
include_path="C:/bugy/ti/xdctools_3_32_01_22_core/packages"--include_path="C:/bugy/ti/controlSUITE/PowerSuite/v_1_06_00_00/packages"--
include_path="C:/bugy/ti/controlSUITE/libs/app_libs/digital_POWER/f28x7x_v 1.0 /C_macros"--
include_path="C:/bugy/ti/controlSUITE/libs/app_libs/digital _power /f28x7x_v 1.0 /include"--
include_path="C:/bugy/ti/controlSUITE/libs/app_libs/sfra/v1_10_00_00/Float/include"--
include_path="C:/bugy/ti/controlSUITE/libs/matics/IQmatht/V160/include"--
include_path="C:/bugy/ti/controlSUITE/device_support/F2837xS/V130/F2837xS_headers/include"--2837--
include_path="C:/bugy/ti/controlSUITE/device_support/F2837xS/V130/F2837xS_common/include"--2837--
advances:performance=all -g --define=CPU1 --define=arm_Math_CM4 --define=_LAUNCHLX_F2.8377万S --display_error_number --diag_warning=225 -k --ASM_listing