PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
ASM
[请益] STM8 8bit加法是否一定要透过 A累加器
楼主:
kikiqqp
(喵食罐头)
2018-03-24 11:10:16
请问 STM8系列加法是否一定要透过 A累加器
举例来说,在C语言下编译器会将
i++;
编译成
LD A, i
INC A
LD i, A
这样就消耗3个指令周期
如果在不在意 C Z等位旗标下,单纯做八位元 0~255累加循环
是否可以直接改写成
asm("INC i");
会有何缺点和问题呢?
谢谢
作者: cs8425 (cs)
2018-03-24 15:46:00
A是暂存器 i是内存位址吧不是所有指令都能读内存+运算+写回去一次做完
楼主:
kikiqqp
(喵食罐头)
2018-03-27 12:31:00
您好 我知道不是所有指令都可以写入位址,但INC指令是可以的
作者: cs8425 (cs)
2018-03-28 02:01:00
那么后面的程式有动用到i这个值吗? 完全没有 >> 那就改呗有 >> 有的指令还是要先把值load到暂存器才能操作总结: 还是要看其他部份的程式 过于片段的程式讨论最佳化是没有意义的
楼主:
kikiqqp
(喵食罐头)
2018-03-28 09:24:00
因为在单芯片上面累加是常常使用的,而大多数都只是当作计时用,以前ASM写的很习惯,转成C后也习惯看一下,才发现编译器是这样处理,等于多耗两个指令时间
作者:
johnpage
(johnpage)
2018-03-28 10:38:00
如果知道A的用途就不会问
作者:
chuegou
(chuegou)
2018-03-29 00:19:00
我看规格书 就算是INC i,VZC也会动耶?是PM0044 STM8 CPU programming manual对吗?然后 i如果是区域变量 你要INC之前要先取址吧
楼主:
kikiqqp
(喵食罐头)
2018-03-29 14:40:00
当然,区域变量的话因为变动的关系所以一定会透过暂存器这点在asm中是另外一个处理方式了
继续阅读
Fw: [问题] peer to peer 同步 protocol 开发
betahalien
Re: C是否能指定函数在特定内存 执行后抹除?
descent
[问题] TI C2000 与ARDUINO DUE透过SCI 通讯
shawn613408
C是否能指定函数在特定内存 执行后抹除?
lazyblack
[请益] 关于遥控器的assembly语言
chuliu
[问题] MCU 不明状况 reset
jlindeberg
[请益] arduino 显示少量即时资料于手机
nissptt
[商借] ICD3 烧录器 愿意提供押金
williamzoe
[请益] arduino 硬件问题
x526542012
Re: [问题] Cortex-M 的 Trace 功能如何使用?
lihgong
Links
booklink
Contact Us: admin [ a t ] ucptt.com