Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Намаляване размера на кода
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=5218
Страница 1 от 1

Автор:  GTN [ Пон Дек 17, 2007 12:42 am ]
Заглавие:  Намаляване размера на кода

Здравейте

След помощта на съфорумниците успях да подкарам флоат аритметиката. MPLABa все още не успявам да го накарам константите да ги изкарва правилно но поне променливите излизат вярно. И sprintf() работи. Голямо улеснение. Всичко е наред, програмата си работи ОК. Обаче на прототипския процесор. А той е с памет за 8000 инструкци. В момента използвам ≈3500инструкции. Всички оптимизации са включени. Дали ще е възможно да намаля кода на програмата като изключа по някакъв начин функциите които не се използват. Примерно:

Цитат:
...
Warning[520] : function "_calc_dewpoint" is never called
Warning[520] : function "flmul_x" is never called
Warning[520] : function "ftmul_x" is never called
Warning[520] : function "fldiv_x" is never called
Warning[520] : function "ftdiv_x" is never called
Warning[520] : function "altofl" is never called
Warning[520] : function "awtofl" is never called
Warning[520] : function "_s_read_statusreg" is never called
Warning[520] : function "altoft" is never called
Warning[520] : function "lltoft" is never called
Warning[520] : function "_frexp" is never called
Warning[520] : function "_eval_poly" is never called
Warning[520] : function "flsub" is never called
Warning[520] : function "flmul" is never called
Warning[520] : function "fldiv" is never called
Warning[520] : function "_log" is never called
Warning[520] : function "_s_softreset" is never called
Warning[520] : function "fladd_x" is never called
Warning[520] : function "ftadd_x" is never called
Warning[520] : function "_log10" is never called
Warning[520] : function "_calc_dewpoint" is never called
Warning[520] : function "flmul_x" is never called
Warning[520] : function "ftmul_x" is never called
Warning[520] : function "fldiv_x" is never called
Warning[520] : function "ftdiv_x" is never called
Warning[520] : function "altofl" is never called
Warning[520] : function "awtofl" is never called
Warning[520] : function "_s_read_statusreg" is never called
Warning[520] : function "altoft" is never called
Warning[520] : function "lltoft" is never called
Warning[520] : function "_frexp" is never called
Warning[520] : function "_eval_poly" is never called
Warning[520] : function "flsub" is never called
Warning[520] : function "flmul" is never called
Warning[520] : function "fldiv" is never called
Warning[520] : function "_log" is never called
Warning[520] : function "_s_softreset" is never called
Warning[520] : function "fladd_x" is never called
Warning[520] : function "ftadd_x" is never called
Warning[520] : function "_log10" is never called
...


Това ми е началото на програмата:
Код:
#include <htc.h>
#include <stdio.h>
#include <math.h>
#include "delay.c"
#include "delay.h"
#include "s_lcd.h"
#include "sht11.h"


Забелязвам че примерно като изтрия функциите за закъснение от delay.c, който не ползвам, размера на кода намалява. Не знам дали със math.h и stdio.h ще се получи същият ефект. А иначе доста функции не се използват.

Използвам HI-TECH PICC 9.50.
Предварително благодаря на всички отговорили :)

Автор:  milenjs [ Пон Дек 17, 2007 9:33 am ]
Заглавие: 

Не съм светило в С-то но предполагам че неизползваните функции не се включват в кода и не се компилират, поне по мои наблюдения, иначе щеше да е тъпо ;)

Автор:  lucifer [ Пон Дек 17, 2007 5:03 pm ]
Заглавие: 

Както казва milenjs функциите от библиотеките, които не се използват не се компилират и не трябва да влияят на размера на кода. Моят компилатор не вади дори warning. В случай, че сам съм писал някакви функции и след това не ги извиквам, компилатора предупреждава, но отново не ги компилира.

Автор:  woody [ Пон Дек 17, 2007 5:31 pm ]
Заглавие: 

@lucifer: Надявам се използваш глагола "компилирам" в оригиналното му значение, а не текущото (всеизвестно), иначе твърдението ти е грешно.

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/