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.

[参考译文] 编译器 CL6x 链接".Obj"到".out"

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1250021/compiler-cl6x-link-obj-to-out

有任何有关 Cl6x 链路对象的信息吗?
我想知道如何计算"obj"文件中的 CallP.S2与"out"文件中的 CallP.S2。
在下面的两个图表中标记了 CallP.S2的位置。

.obj 文件:

.out 文件


CL6x 链路如何计算0x1ffc13并得到0x1fff5A93?

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

    请在 C6000汇编工具手册 中搜索标题为 符号重定位的子章节

    谢谢。此致、

    -乔治

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

    非常感谢您的回复、看完 PDF 后、还是不是很清楚、数据是如何转换的?
    您能更清楚一点地解释一下吗?

    喜欢什么:
    1. 0x00000012如何转换为0x0fffe012?
    2. 0x0180082A 如何转换为0x01B9082A?
    3. 0x0180006A 如何转换为0x1860006A?

    具体的计算方法是什么?


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

    这篇文章介绍了有关搬迁的详细信息的文档。

    考虑这个简单的 C 代码...

    /* file.c */
    void function_call();
    
    void example()
    {
        function_call();
    }

    构建它...

    $ cl6x --symdebug:none --asm_listing file.c

    cl6x 是 C6000编译器。  选项 -symdebug:无 禁止生成调试信息。  切勿在实际实践中这样做。  由于不存在调试信息、因此该示例更容易理解。  选项 -- asm_listing 说明如何创建汇编器列表文件。  它与源文件同名、扩展名更改为 .lst 。   

    要查看为此代码生成的重定位,请运行此命令...

    $ ofd6x --obj_display=none,relocs file.obj
    
    OBJECT FILE:  file.obj
    
     Relocation Table 1/1 for Section 1 (".text")
    
        id type            offset     sym name
        -- ----            ------     --- ----
         0 R_C6000_PCR_S21 0x00000004   5 function_call

    要查看有关 ofd6x 请在 C6000汇编工具手册中进行搜索。  该输出显示重定位类型 R_C6000_PCR_S21 应用于本视频开头部分的 .text 。  此处是左下角列表中的 file.lst ...

          48 00000000 01bc54f6             STW     .D2T2   B3,*SP++(-8)      ; [B_D64P] |5|
          49 00000004 10000012!            CALLP   .S2     function_call,B3  ; [B_Sb64P] |6|

    第二列给出了每条指令的偏移量。  在本例中、偏移量4用于第二条指令。  因此、重定位适用于该区域、 CALL P 来调用函数。   

    要查看所有重定位的文档、包括 R_C6000_PCR_S21 请在 C6000嵌入式应用二进制接口手册 中搜索标题为" 重定位"的子章节。

    谢谢。此致、

    -乔治