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说的还理解不了再找大哥也不迟~~