找回密码
 立即注册
楼主: 大锤子

寻找SDCC技术交流组织

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:456
  • 最近打卡:2025-05-02 08:26:53
已绑定手机

27

主题

341

回帖

1691

积分

金牌会员

机长

积分
1691
发表于 2024-8-7 18:49:17 | 显示全部楼层
本帖最后由 hsrzq 于 2024-8-7 18:50 编辑
大*** 发表于 2024-8-7 16:56
这个用户手册中也是这么描述的,如果没有使用reentrant等默认就是不可重入的。
.mem 这个文件中的表是代 ...

sdcc生成的文件就像自带注释一样,应该很好理解才对……
业余撸代码,专业开飞机
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2024-12-23 11:42:56

3

主题

28

回帖

154

积分

注册会员

积分
154
发表于 2024-8-7 18:51:54 | 显示全部楼层
大*** 发表于 2024-8-7 16:57
嗯, 这个地方看了好多遍了, 但是从编译产生的文件中没办法对映上。

.mem里面应该是data/idata内存,也就是MCS-51标准内置内存。
最大256个字节,但包括四组通用寄存R0~R7、栈空间等等……
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-02 07:55:56
已绑定手机

19

主题

3191

回帖

4872

积分

论坛元老

积分
4872
发表于 2024-8-7 19:17:03 来自手机 | 显示全部楼层
如果英文没问题可以到sdcc在sf开源项目里面反馈。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:469
  • 最近打卡:2025-05-02 11:38:17

44

主题

230

回帖

2845

积分

金牌会员

积分
2845
发表于 2024-8-7 20:20:53 | 显示全部楼层
hsr*** 发表于 2024-8-7 17:46
.mem文件文件本身就带详细说明,我觉得不用再解释了呀

多谢大佬指点,我研究下
不争是争
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:469
  • 最近打卡:2025-05-02 11:38:17

44

主题

230

回帖

2845

积分

金牌会员

积分
2845
发表于 2024-8-7 20:52:32 | 显示全部楼层
hsr*** 发表于 2024-8-7 17:46
.mem文件文件本身就带详细说明,我觉得不用再解释了呀

麻烦大佬再帮忙看下我这个工程生成的文件:
这个是.mem 文件的内容:
Internal RAM layout:
      0 1 2 3 4 5 6 7 8 9 A B C D E F
0x00:|0|0|0|0|0|0|0|0|Q|Q|Q|Q| | | | |
0x10:| | | | | | | | | | | | | | | | |
0x20:|B|T|a|a|a|a|a|a|a|a|a|a|a|a|a|a|
0x30:|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|
0x40:|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|
0x50:|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|
0x60:|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|
0x70:|a|a|a|a|a|a|a|a|a|a|a|a|a|S|S|S|
0x80:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|
0x90:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|
0xa0:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|
0xb0:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|
0xc0:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|
0xd0:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|
0xe0:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|
0xf0:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|
0-3:Reg Banks, T:Bit regs, a-z:Data, B:Bits, Q:Overlay, I:iData, S:Stack, A:Absolute

Stack starts at: 0x7d (sp set to 0x7c) with 131 bytes available.
The largest spare internal RAM space starts at 0xc with 20 bytes available.

Other memory:
   Name             Start    End      Size     Max     
   ---------------- -------- -------- -------- --------
   PAGED EXT. RAM                         0      256   
   EXTERNAL RAM     0x0001   0x00c4     196     8192   
   ROM/EPROM/FLASH  0x0000   0x416d   16750    65536   


1、这里的 a 指的是data 在 .map中是 DSEG段吗? 这里看上去占用了 91 字节;
但是在map文件中, DSEG: 108;
2、截取部分map文件:
      -----  --------------------------------   ------------------------
ASxxxx Linker V03.00 + NoICE + sdld,  page 24.
Hexadecimal  [32-Bits]

Area                                    Addr        Size        Decimal Bytes (Attributes)
--------------------------------        ----        ----        ------- ----- ------------
DSEG                                00000000    0000006C =         108. bytes (REL,CON)

      Value  Global                              Global Defined In Module
      -----  --------------------------------   ------------------------
ASxxxx Linker V03.00 + NoICE + sdld,  page 25.
Hexadecimal  [32-Bits]

Area                                    Addr        Size        Decimal Bytes (Attributes)
--------------------------------        ----        ----        ------- ----- ------------
OSEG                                00000008    00000004 =           4. bytes (REL,OVR)

      Value  Global                              Global Defined In Module
      -----  --------------------------------   ------------------------
ASxxxx Linker V03.00 + NoICE + sdld,  page 26.
Hexadecimal  [32-Bits]

这里DSEG 和 OSEG都看不出是在哪里定义的,也不知道具体是哪些参数和变量占用了这些资源
不争是争
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:456
  • 最近打卡:2025-05-02 08:26:53
已绑定手机

27

主题

341

回帖

1691

积分

金牌会员

机长

积分
1691
发表于 2024-8-8 11:06:15 | 显示全部楼层
大*** 发表于 2024-8-7 20:52
麻烦大佬再帮忙看下我这个工程生成的文件:
这个是.mem 文件的内容:
Internal RAM layout:

DSEG是internal ram data,是data/idata中除了栈之外的所有部分,包含了通用寄存器组0-3、位变量T/B、参数重叠部分Q、data变量a-z等全部内容。
再者可以从Addr和Size段也能看到,DSEG是从0x00位置开始的0x6c长的内容,对应mem文件0x00行的第一个0到0x70行的最后一个a位置。

DSEG、OSEG本来就是助记符,理论上随便写成啥名都可以。.map是由链接器在链接过程中生成的,所以它所有标记的来源就是汇编文件了,基本上在.asm文件中都能找到它们的宝义。但可能有一部分是在sdcc的库中定义的,得去sdcc安装目录下的lib或include之类的目录下面找找
业余撸代码,专业开飞机
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:469
  • 最近打卡:2025-05-02 11:38:17

44

主题

230

回帖

2845

积分

金牌会员

积分
2845
发表于 2024-8-8 11:15:21 | 显示全部楼层
hsr*** 发表于 2024-8-8 11:06
DSEG是internal ram data,是data/idata中除了栈之外的所有部分,包含了通用寄存器组0-3、位变量T/B、参 ...

感谢解答。
不争是争
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2024-12-23 11:42:56

3

主题

28

回帖

154

积分

注册会员

积分
154
发表于 2024-8-8 11:19:18 | 显示全部楼层
大*** 发表于 2024-8-7 20:52
麻烦大佬再帮忙看下我这个工程生成的文件:
这个是.mem 文件的内容:
Internal RAM layout:

截图202408081118487169.jpg
这种问题最适合问AI了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:469
  • 最近打卡:2025-05-02 11:38:17

44

主题

230

回帖

2845

积分

金牌会员

积分
2845
发表于 2024-8-8 11:24:35 | 显示全部楼层
Tec*** 发表于 2024-8-8 11:19
这种问题最适合问AI了

ai的回答只能讲通常,,,
还是机长大佬的回答更细致。
不争是争
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2024-12-23 11:42:56

3

主题

28

回帖

154

积分

注册会员

积分
154
发表于 2024-8-8 11:37:36 | 显示全部楼层
大*** 发表于 2024-8-8 11:24
ai的回答只能讲通常,,,
还是机长大佬的回答更细致。

但机长大哥只有一个,而AI可以不限量呀。AI说的还理解不了再找大哥也不迟~~
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 22:07 , Processed in 0.149780 second(s), 118 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表