This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/CCCStudio:.align 4在ASM中不起作用

Guru**** 2465890 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/580266/compiler-ccstudio-align-4-doesn-t-work-in-asm

部件号:CCStudio

工具/软件:TI C/C++编译器

在C6748,6.1 ,7.4 上工作

我在boot.asm中设置对齐,如下所示:


.sect ".boot_load"
对齐4.
.ref _c_int00
全局_boot

引导(_L):
;********************************************************
;PINMUX13-PINMUX19适用于EMIFA的配置
;*********************************************************
Mvkl PINMUX13,A4.
|| mvkl PINMUX13_V,B4.

cmd文件:

内存

Shared_ram1:原点= 0x1180.0004万长度= 0x0.04万
Shared_ram:原始= 0x1180.0404万长度= 0x3万
DSP_L2_RAM:原点= 0x800万长度= 0x2万
external_ram:origin = 0xC0万 length = 0x800万
arm_local_ram:原始= 0xFFFF0000长度= 0x0.2万
}

章节

.boot_load > shared_ram1.

从MAP文件中,.boot_load部分对齐为0x20Byte,而不是4Byte。 为什么?

选择分配映射

输出属性/
书帖页面原点长度输入书帖
----------------- -------- -------- --------
.boot_load
* 11.8万 1180002万 0000.012万
11.8万20 000001202万00120 boot.obj0.012万 boot.obj (.boot_load)

数据11.8004万 1180040.4万 0000万未初始化

如果我按如下所示更改cmd文件,  

章节

.boot_load > 0x1180.0004万

然后将映射文件分配给该地址。

区段分配图

输出属性/
书帖页面原点长度输入书帖
----------------- -------- -------- --------
.boot_load
* 011800004 0000013c
1180.0004万 0.0001万c --hole --[填充=0]
11.8万20 000001202万00120 boot.obj0.012万 boot.obj (.boot_load)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我猜这是因为获取数据包的长度为32字节,所以链接程序选择了更严格的32字节对齐(这仍然满足您的对齐规范)。spraa46a.pdf说输入部分必须对齐到32字节,请参阅第20页。

    将该部分放在特定的内存地址上似乎可以正常工作,但我猜测实际上不允许这样做,并可能导致崩溃。

    Markus

    编辑:我现在看到链接器实际上没有将任何代码放置在1180.0004万,只有几个填充字节。 因此,这似乎是安全的,但我怀疑这对你有任何帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    .BOOT_LOAD部分与0x20字节对齐,而不是4字节对齐。 为什么?[/QUOT]

    我确认Markus Moll的答复是正确的。 汇编程序强制包含代码的每个输入部分在获取数据包边界(32 (0x20)字节)上对齐。  应用手册A.10节的最后几段说明了为什么需要进行此类对齐 。高级链接器技术可方便,高效地使用内存。

    谢谢,此致,

    -George