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.

[参考译文] CCS/TMS570LS1224:汇编器问题(CCS 7.2)

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/617250/ccs-tms570ls1224-assembler-issue-ccs-7-2

器件型号:TMS570LS1224
主题中讨论的其他器件:HALCOGEN

工具/软件:Code Composer Studio

我有一个用于 TMS570的简短汇编器文件、该文件不会汇编。 汇编器抛出以下错误:

第1行:错误#171:需要声明

我不确定这里发生了什么。 如果我在 Cortex-M 处理器中使用同一个文件(添加了.thumb)、则效果很好。 有什么想法吗?

.text
.align 2
.Syntax unified

.global Clz

Clz:
clzr0、r0//确定32位字
BXlr

.end 中设置的最高位的位位置

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

    Jerry、

    根据编译器文档、__clz (int src)是受支持的内在函数、可以从 C/C++代码调用。

    从编译器 TRM:

    C/C++编译器内在函数 组件
    指令
    说明
    int count =__clz (int src); CLZ 计数,src 返回前导零的计数

    即、不需要汇编函数、因为它已经是编译器内在函数。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、我知道 CLZ 是一个内在函数。 我用这个作为示例。 我删除了几百行汇编语言、这些汇编语言还不是内在函数、因此我仍然需要知道如何使汇编文件汇编、而不会出现我看到的"line 1:error #171:Expected a declaration"错误。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您需要在.text 段声明之后添加.arm 声明。

    从 HalCoGen 生成的汇编文件中的一个片段显示如下:

    .text
    ARM
    
    ;--------------------------------------------------------------
    ;初始化 CPU 寄存器
    ;sourceId:core_sourceId_001
    ;DesignId:core_DesignId_001
    ;要求:hL_SR477、hL_SR476、hL_SR492
    
    .def _coreInitRegisters_
    .asmfunc
    
    
    _coreInitRegisters_
    
    
    ;复位后,CPU 处于监控器模式(M = 10011)
    MOV r0、LR
    MOV R1、#0x0000
    MOV R2、#0x0000
    MOV R3、#0x0000
    MOV R4、#0x0000
    MOV R5、#0x0000
    MOV R6、#0x0000
    MOV r7、#0x0000
    MOV R8、#0x0000
    MOV R9、#0x0000
    MOV R10、#0x0000
    MOV r11、#0x0000
    MOV R12、#0x0000
    MOV R13、#0x0000
    R1女士、CPSR
    MSR spsr_cxsf、R1
    ;切换到 FIQ 模式(M = 10001)
    CPS 17
    MOV LR、r0
    MOV R8、#0x0000
    MOV R9、#0x0000
    MOV R10、#0x0000
    MOV r11、#0x0000
    MOV R12、#0x0000
    R1女士、CPSR
    MSR spsr_cxsf、R1
    ;切换到 IRQ 模式(M=10010)
    CPS 18
    MOV LR、r0
    R1女士、CPSR
    MSR spsr_cxsf、R1
    ;切换到中止模式(M = 10111)
    CPS #23
    MOV LR、r0
    R1女士、CPSR
    MSR spsr_cxsf、R1
    ;切换到未定义指令模式(M=11011)
    CPS #27
    MOV LR、r0
    R1女士、CPSR
    MSR spsr_cxsf、R1
    ;切换到系统模式(共享用户模式寄存器)(M = 11111)
    CPS #31
    MOV LR、r0
    R1女士、CPSR
    MSR spsr_cxsf、R1
    
    
    MRC P15、 0x00、 R2、 c1、c0、#0x02
    ORR R2、 R2、 0xF00000
    MCR P15、 0x00、 R2、 c1、c0、#0x02
    MOV R2、 0x40000000
    fmxr fpexc、R2
    
    fmdr d0、 R1、 R1
    Fmdr D1、 R1、 R1
    Fmdr D2、 R1、 R1
    Fmdr D3、 R1、 R1
    Fmdr D4、 R1、 R1
    Fmdr D5、 R1、 R1
    fmdr d6、 R1、 R1
    Fmdr D7、 R1、 R1
    Fmdr D8、 R1、 R1
    Fmdr D9、 R1、 R1
    fmdr d10、 R1、 R1
    Fmdr D11、 R1、 R1
    fmdr d12、 R1、 R1
    Fmdr D13、 R1、 R1
    Fmdr D14、 R1、 R1
    Fmdr D15、 R1、 R1
    bl next1
    next1
    bl next2
    next2
    bl next3
    next3
    bl next4
    next4
    BX r0
    
    endasmfunc
    
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    臂装配说明不能从第一列开始。 它们前面必须有空格。
    .text
    .align 2.
    统一.Syntax ---- 这不是正确的指令
    全局 Clz ---- 请在""之前添加空格。 (QJ)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Jerry、

    您是否曾尝试向说明中添加空格?