hsrzq 发表于 2024-8-7 18:49:17

本帖最后由 hsrzq 于 2024-8-7 18:50 编辑

大锤子 发表于 2024-8-7 16:56
这个用户手册中也是这么描述的,如果没有使用reentrant等默认就是不可重入的。
.mem 这个文件中的表是代 ...
sdcc生成的文件就像自带注释一样,应该很好理解才对……

TechQI 发表于 2024-8-7 18:51:54

大锤子 发表于 2024-8-7 16:57
嗯, 这个地方看了好多遍了, 但是从编译产生的文件中没办法对映上。

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

soma 发表于 2024-8-7 19:17:03

如果英文没问题可以到sdcc在sf开源项目里面反馈。

大锤子 发表于 2024-8-7 20:20:53

hsrzq 发表于 2024-8-7 17:46
.mem文件文件本身就带详细说明,我觉得不用再解释了呀




多谢大佬指点,我研究下

大锤子 发表于 2024-8-7 20:52:32

hsrzq 发表于 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/FLASH0x0000   0x416d   16750    65536   


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

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

      ValueGlobal                              Global Defined In Module
      -------------------------------------   ------------------------
ASxxxx Linker V03.00 + NoICE + sdld,page 25.
Hexadecimal

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

      ValueGlobal                              Global Defined In Module
      -------------------------------------   ------------------------
ASxxxx Linker V03.00 + NoICE + sdld,page 26.
Hexadecimal

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

hsrzq 发表于 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之类的目录下面找找

大锤子 发表于 2024-8-8 11:15:21

hsrzq 发表于 2024-8-8 11:06
DSEG是internal ram data,是data/idata中除了栈之外的所有部分,包含了通用寄存器组0-3、位变量T/B、参 ...

{:4_250:} 感谢解答。

TechQI 发表于 2024-8-8 11:19:18

大锤子 发表于 2024-8-7 20:52
麻烦大佬再帮忙看下我这个工程生成的文件:
这个是.mem 文件的内容:
Internal RAM layout:



这种问题最适合问AI了{:4_164:}

大锤子 发表于 2024-8-8 11:24:35

TechQI 发表于 2024-8-8 11:19
这种问题最适合问AI了

ai的回答只能讲通常,,,
还是机长大佬的回答更细致。

TechQI 发表于 2024-8-8 11:37:36

大锤子 发表于 2024-8-8 11:24
ai的回答只能讲通常,,,
还是机长大佬的回答更细致。

但机长大哥只有一个,而AI可以不限量呀。AI说的还理解不了再找大哥也不迟~~
页: 1 [2] 3
查看完整版本: 寻找SDCC技术交流组织