gpt4 book ai didi

c - 为什么使用数据而不是 xdata 会显着减少代码空间

转载 作者:太空狗 更新时间:2023-10-29 15:04:09 28 4
gpt4 key购买 nike

我曾尝试寻找这个问题的答案,但找不到明确的原因。

我正在尝试优化一些 8051 C 代码以减少代码空间。我做了以下更改..

xdata unsigned char a, b;

data unsigned char a, b;

... 看到我的代码大小减少了 39 字节(感觉像圣诞节)。

来自:程序大小:data=9.0 ...code=10509

至:程序大小:data=11.0 ... code=10468

问题:为什么这么小的改动代码空间就减少了这么多?

最佳答案

这取决于您如何使用(以及使用了多少次)这些变量。 xdata 需要 16 位寻址,这会占用更多空间。举个例子,将固定地址处的值加载到累加器中,xdata 占用的代码空间是 data 的两倍:

在 30h 加载累加器的值(数据):

MOV A, 30h       ; 2 bytes

用 1230h 处的值加载累加器(扩展数据):

MOV DPTR, #1230h ; 3 bytes
MOVX A, @DPTR ; 1 byte

从数据到数据的复制需要三个字节(MOV direct, direct),从 xdata 到 xdata 的复制可能需要八个字节(MOV DPTR, #addr1; MOVX; MOV DPTR #addr2 ; MOVX).如果您多次访问这些变量并且编译器无法优化它们对寄存器的使用,那么它会很快加起来。

关于c - 为什么使用数据而不是 xdata 会显着减少代码空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21478304/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com