作者ksmrt0123 (ksmrt)
看板ASM
標題Re: [問題] 同樣輸出pulse想從不同腳位送出..
時間Tue Sep 10 12:26:21 2013
printf()功能很強大, 但也因此又慢(執行速度)又大(code size).
若程式只需要單純的印出字串, 通常做法是寫一個精簡版本替代printf(),
void out_str(char * s)
{
while(*s) {
putchar(*s);
++s;
}
}
接下來只要把程式中的printf改成out_str即可
void main(void)
{
out_str("hello, world");
}
※ 引述《mosquito520 ( )》之銘言:
: → ksmrt0123:我很疑惑怎樣的code是'醜'但效能好的? 請問有例子嗎? 09/10 00:18
常見的寫法
#include <stdio.h>
#include <8051.h>
void putchar(char ch){
while(!TI);
TI = 0;
SBUF = ch;
}
void main(void)
{
printf("hello, world");
}
SDCC編譯出來的結果
Other memory:
Name Start End Size Max
---------------- -------- -------- -------- --------
PAGED EXT. RAM 0 256
EXTERNAL RAM 0 65536
ROM/EPROM/FLASH 0x0000 0x0993 2452 65536
比較醜的寫法
__code char array[] = {"hello, world"};
void putchar(char ch){
while(!TI);
TI = 0;
SBUF = ch;
}
void main(void)
{
char i;
i=0;
while(array[i] != '\0')
{
putchar(array[i]);
i++;
}
}
SDCC編譯出來的結果
Other memory:
Name Start End Size Max
---------------- -------- -------- -------- --------
PAGED EXT. RAM 0 256
EXTERNAL RAM 0 65536
ROM/EPROM/FLASH 0x0000 0x0095 150 65536
以上隨便是隨便撈個compiler來用
隨便想個可能差比較多的範例
所以寫寫
僅供參考:)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.34.187.83
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.84.232.180
※ 編輯: ksmrt0123 來自: 219.84.232.180 (09/10 12:34)