作者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)