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.

[参考译文] 编译器/LAUNCHCC3220MODASF:将 Makefile 与 CCS 和汇编文件配合使用

Guru**** 2585245 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/814896/compiler-launchcc3220modasf-using-a-makefile-with-ccs-and-assembly-files

器件型号:LAUNCHCC3220MODASF

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

嗨、大家好、

我目前正在尝试使用 Code Composer Studio 和 Makefile 来编译一些代码。 它目前可以正常使用.c 和.cpp 文件、但我尝试在 makefile 文件中包含 PowerCC32XX_ASM.asm 文件、并且遇到了问题。 我假设我要用于编译汇编文件的工具是 armcl.exe? 或者、我是否要使用 armar.exe 或 armasm.exe? 此外、使用其中任何一个进行编译的格式是什么。 我一直在使用 gcc 和 g++来处理 c 和 c++文件、因此我对这些可执行文件还没有太多经验。

提前感谢您!

查尔斯

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

    [报价用户="Charles Fleck1"]我一直在使用 gcc 和 g++来处理 c 和 c++文件

    您是否为编译器使用了这些精确的名称?  这些工具不会为您的系统中的 ARM CPU 构建代码、而是为您的主机系统(笔记本电脑或类似设备)构建代码。  使用名为  arm-none-eabi-g++的 GCC ARM 编译器。  它使用文件扩展名来了解如何构建源文件。  文件扩展名.c 表示 C、.cpp 表示 C++、.s 表示汇编。  许多其他扩展被识别、但这些是通常的扩展。

    [引用 user="Charles Fleck1"]我假设我要用于编译汇编文件的工具是 armcl.exe?[/quot]

    这是 TI ARM 编译器。  使用 GCC ARM 编译器或 TI ARM 编译器。  不是在同一个项目中同时出现。  不是因为无法混合使用这些编译器。  因为、实际上、很难组织使用多个编译器的工程。

    话虽如此、一个 ARM 编译器连接使用另一个 ARM 编译器构建的库是可行的。

    谢谢、此致、

    乔治

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

    嗨、George、

    我们目前正在对.c 文件使用 ARM-eabi-gcc、对.cpp 文件使用 ARM-eabi-g++。 TI 汇编文件的扩展名是.asm、而不是.s、似乎没有任何 ARM-eabi 编译器能够编译它们。 我不想重写我们的 entier Makefile 来使用 TI ARM 编译器、是否可以使用 GCC ARM 编译器编译.asm 文件?

    我确实尝试使用 armasm.exe 编译器、但它会给我提供一组汇编错误、我在该消息的末尾粘贴了这些错误。

    再次感谢!

    查尔斯

    11:57:22****项目 new_sensor****的配置增量构建默认值
    生成 BUIL_CCS/Makefile 全部
    make:没有为'./build_cs/Makefile"执行任何操作。
    C:/ti/ccs901/ccs/tools/compiler/ti-cgt-arm_18.12.1.LTS/bin/armasm --cpu=list ./ti/drivers/power/PowerCC32XX_asm.asm
    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 在第35行:[E0002]
    指定了非法助记符
    预览8.

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 第37行:[E0002]
    指定了非法助记符
    公共 PowerCC32XX_enterLPDS

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 第38行:[E0002]
    指定了非法助记符
    公共 PowerCC32XX_RESUMELPDS

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 在第40行:[E0002]
    指定了非法助记符
    extern PowerCC32XX_contextSave

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 第41行:[E0002]
    指定了非法助记符
    外部 PRCMLPDSRestoreInfoSet

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 第50行:[E0002]
    指定了非法助记符
    段代码:代码:NOROOT

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 第51行:[E0002]
    指定了非法助记符
    拇指

    "../ti/drivers/power/PowerCC32XX_asm.asm、警告! 第55行:[W0004]
    忽略无效的指令修饰符
    mov32 R1、PowerCC32XX_contextSave

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 第55行:[E0001]
    未定义的符号
    mov32 R1、PowerCC32XX_contextSave

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 在第55行:[E0004]
    非法操作数
    mov32 R1、PowerCC32XX_contextSave

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 第56行:[E0004]
    此架构不支持状态寄存器。
    r0夫人、MSP

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 第58行:[E0004]
    此架构不支持状态寄存器。
    r0、PSP 夫人

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 第60行:[E0004]
    此架构不支持状态寄存器。
    r0、primask

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 在第62行:[E0004]
    此架构不支持状态寄存器。
    r0、faultmask

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 在第64行:[E0004]
    此架构不支持状态寄存器。
    r0、basepri 女士

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 第66行:[E0004]
    此架构不支持状态寄存器。
    r0女士、控制

    "../ti/drivers/power/PowerCC32XX_asm.asm、警告! 在第69行:[W0004]
    忽略无效的指令修饰符
    mov32 R1、PowerCC32XX_resumeLPDS

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 在第69行:[E0004]
    非法操作数
    mov32 R1、PowerCC32XX_resumeLPDS

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 第70行:[E0001]
    未定义的符号
    BL PRCMLPDSRestoreInfoSet

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 在第79行:[E0002]
    指定了非法助记符
    段代码:代码:NOROOT

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 在第80行:[E0002]
    指定了非法助记符
    拇指

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 在第82行:[E0001]
    未定义的符号
    NOP.W

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 在第82行:[E0003]
    意外的尾随操作数
    NOP.W

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 第83行:[E0001]
    未定义的符号
    NOP.W

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 在第83行:[E0003]
    意外的尾随操作数
    NOP.W

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 在第84行:[E0001]
    未定义的符号
    NOP.W

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 在第84行:[E0003]
    意外的尾随操作数
    NOP.W

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 第85行:[E0001]
    未定义的符号
    NOP.W

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 在第85行:[E0003]
    意外的尾随操作数
    NOP.W

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 第86行:[E0002]
    指令仅在 V6M0和 V7及更高版本中可用
    DSB

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 在第87行:[E0002]
    指令仅在 V6M0和 V7及更高版本中可用
    ISB

    "../ti/drivers/power/PowerCC32XX_asm.asm、警告! 在第88行:[W0004]
    忽略无效的指令修饰符
    mov32 R1、PowerCC32XX_contextSave

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 在第88行:[E0001]
    未定义的符号
    mov32 R1、PowerCC32XX_contextSave

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 在第88行:[E0004]
    非法操作数
    mov32 R1、PowerCC32XX_contextSave

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 在90行:[E0004]
    此架构不支持状态寄存器。
    MSR control、r0

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 在第92行:[E0004]
    此架构不支持状态寄存器。
    MSR MSP、r0

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 在第94行:[E0004]
    此架构不支持状态寄存器。
    MSR PSP、r0

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 在第96行:[E0004]
    此架构不支持状态寄存器。
    MSR primask、r0

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 在第98行:[E0004]
    此架构不支持状态寄存器。
    MSR FAULTMASK、r0

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 在第100行:[E0004]
    此架构不支持状态寄存器。
    MSR basepri、r0

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 在第102行:[E0002]
    指令仅在 V6M0和 V7及更高版本中可用
    DSB

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 第103行:[E0002]
    指令仅在 V6M0和 V7及更高版本中可用
    ISB

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 第106行:[E0002]
    指定了非法助记符
    结束

    "../ti/drivers/power/PowerCC32XX_asm.asm、错误! 在 EOF 上:[E0300]
    以下符号未定义:
    41汇编错误、3条汇编警告
    PRCMLPDSRestoreInfoSet
    W
    PowerCC32XX_contextSave

    源代码中的错误-汇编器已中止
    Makefile:401:目标'dbg/PowerCC32XX_asm.o'的配方失败
    make:***[dbg/PowerCC32XX_asm.o]错误1.

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

    [引用 user="Charles Fleck1"]我们目前正在对.c 文件使用 ARM-eabi-gcc,对.cpp 文件使用 ARM-eabi-g++。

    您可以简化它。  只需对 C 文件和 C++文件使用 arm-eabi-g++即可。   

    我不能识别这些名称。  您必须使用 TI 未发布的 GCC ARM 编译器。  严格地说、此论坛仅支持 TI 发布的编译器。  不过、所有 GCC ARM 编译器都有相同的接口、因此我的答案可能是正确的。

    [报价用户="Charles Fleck1"]是否可以使用 GCC ARM 编译器编译.asm 文件?[/quot]

    显然,您不想将文件从.asm 重命名.s 。 是的。  编译.asm 文件时、添加以下选项: -x 汇编器

    [引用 user="Charles Fleck1"]我尝试使用 armasm.exe 编译器,但它给了我一组汇编错误

    GCC ARM 工具和 TI ARM 工具在汇编语法上存在差异。  这些指令是相同的。  但汇编器指令不同。  您的汇编文件可能会使用 GCC ARM 工具预期的指令。

    谢谢、此致、

    乔治

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

    嗨、George、

    我已经确认可以使用 arm-eabi-g++编译.c 和.cpp 文件、但汇编文件仍然有问题。 我尝试了 ARM-eabi-g++-x 汇编器 PowerCC32XX_ASM.asm、但它发出了一组错误。 它看起来是在尝试编译一个.s 文件,而不是.asm 文件,因为它不能识别;作为注释。 我通过将改为@确认了这一点,然后将其确认为评论。 我已经将错误附加到了该消息的底部。

    谢谢!

    查尔斯

    生成 BUIL_CCS/Makefile 全部
    make:没有为'./build_cs/Makefile"执行任何操作。
    C:\QP\qtools\GNU_ARM-eabi/bin/ARM-eabi-g++-x 汇编器./ti/drivers/power/PowerCC32XX_asm.asm
    ./ti/drivers/power/PowerCC32XX_asm.asm:汇编器消息:
    /ti/drivers/power/PowerCC32XX_asm.asm:2:错误:错误说明`版权所有(c) 2015-2016、德州仪器(TI)公司'
    ./ti/drivers/power/PowerCC32XX_asm.asm:3:错误:错误指令`保留所有权利。'
    ./ti/drivers/power/PowerCC32XX_asm.asm:5:错误:错误指令`re源代码和二进制格式的分布和使用、有无'
    `m/ti/drivers/power/PowerCC32XX_asm.asm:6:错误:错误指令"修改、如果满足以下条件"、则允许执行此操作
    ./ti/drivers/power/PowerCC32XX_asm.asm:7:错误:错误指令`符合:'
    ./ti/drivers/power/PowerCC32XX_asm.asm:9:错误:行末尾的垃圾邮件,第一个无法识别的字符为`*'
    ./ti/drivers/power/PowerCC32XX_asm.asm:10:错误:错误说明`注意、此条件列表和以下免责声明。'
    ./ti/drivers/power/PowerCC32XX_asm.asm:12:错误:行末尾的垃圾邮件,第一个无法识别的字符为`*'
    ./ti/drivers/power/PowerCC32XX_asm.asm:13:错误:错误说明`注意、此条件列表和'中的以下免责声明
    `d/ti/drivers/power/PowerCC32XX_asm.asm:14:错误:错误说明“文档和/或随分发提供的其他材料”。
    ./ti/drivers/power/PowerCC32XX_asm.asm:16:错误:行末尾的垃圾邮件,第一个无法识别的字符为`*'
    ./ti/drivers/power/PowerCC32XX_asm.asm:17:错误:错误说明`其贡献者可用于认可或推广衍生产品'
    ./ti/drivers/power/PowerCC32XX_asm.asm:18:错误:错误指令`来自此软件且未经特定事先书面许可。'
    ./ti/drivers/power/PowerCC32XX_asm.asm:20:错误:错误说明`本软件由版权所有者和贡献者"按原样"提供
    /ti/drivers/power/PowerCC32XX_asm.asm:21:错误:ARM 寄存器预期--`和任何明示或暗示的保证,包括但不限于,'
    /ti/drivers/power/PowerCC32XX_asm.asm:22:错误:错误说明`适销性和特定适用性的暗示保证'
    /ti/drivers/power/PowerCC32XX_asm.asm:23:错误:错误说明`不承认目的。 在任何情况下、版权所有者或
    ./ti/drivers/power/PowerCC32XX_asm.asm:24:错误:错误说明`贡献者应对任何直接、间接、偶然、特殊、'负责
    ./ti/drivers/power/PowerCC32XX_asm.asm:25:错误:错误说明`惩戒性或必然性损害(包括但不限于)'
    /ti/drivers/power/PowerCC32XX_asm.asm:26:错误:错误说明`采购替代货物或服务'
    /ti/drivers/power/PowerCC32XX_asm.asm:26:错误:错误说明`使用、数据或利润损失'
    /ti/drivers/power/PowerCC32XX_asm.asm:27:错误:错误:错误说明`或业务中断),但造成了任何责任理论,'
    ./ti/drivers/power/PowerCC32XX_asm.asm:28:错误:错误说明`是合同、严格责任还是侵权(包括疏忽或)
    ./ti/drivers/power/PowerCC32XX_asm.asm:29:错误:错误指令`否则)以任何方式因使用此软件而产生、'
    /ti/drivers/power/PowerCC32XX_asm.asm:30:错误:错误说明`即使被告知可能会发生此类损坏。'
    ./ti/drivers/power/PowerCC32XX_asm.asm:`:错误:行末尾有垃圾,第一个无法识别的字符为“=”
    /ti/drivers/power/PowerCC32XX_asm.asm:35:错误:错误说明`防腐剂8'
    ./ti/drivers/power/PowerCC32XX_asm.asm:37:错误:错误指令`公共 PowerCC32XX_enterLPDS
    ./ti/drivers/power/PowerCC32XX_asm.asm:38:错误:错误指令`公共 PowerCC32XX_RESUMELPD'
    ./ti/drivers/power/PowerCC32XX_asm.asm:40:错误:错误指令`extern PowerCC32XX_contextSave'
    ./ti/drivers/power/PowerCC32XX_asm.asm:41:错误:错误指令`extern PRCMLPDSRestoreInfoSet'
    ./ti/drivers/power/PowerCC32XX_asm.asm:44:`:行末尾的垃圾,第一个无法识别的字符为“=”
    ./ti/drivers/power/PowerCC32XX_asm.asm:45:错误:错误指令`函数将 ARM 寄存器保存在 contextSave 结构中。'
    ./ti/drivers/power/PowerCC32XX_asm.asm:46:错误:所需条件--`它使用恢复 SP 和'调用 PRCMLPDSRestoreInfoSet
    ./ti/drivers/power/PowerCC32XX_asm.asm:47:错误:错误指令`powercc32xx_resumelpds 函数。'
    ./ti/drivers/power/PowerCC32XX_asm.asm:48:错误:错误指令`最后、它会调用 LPDS 进入函数以进入 LPDS。'
    ./ti/drivers/power/PowerCC32XX_asm.asm:50:错误:错误指令`s检测代码:代码:NOROOT'
    ./ti/drivers/power/PowerCC32XX_asm.asm:51:错误:错误指令`thum'
    ./ti/drivers/power/PowerCC32XX_asm.asm:55:错误:错误指令`mov32 R1、PowerCC32XX_contextSave'
    /ti/drivers/power/PowerCC32XX_asm.asm:56:错误:所选处理器不支持所请求的特殊用途寄存器-`mRS r0、MSP'
    /ti/drivers/power/PowerCC32XX_asm.asm:58:错误:所选处理器不支持所请求的特殊用途寄存器-`mRS r0、PSP'
    /ti/drivers/power/PowerCC32XX_asm.asm:60:错误:所选处理器不支持所请求的特殊用途寄存器-`mrs r0、primask '
    /ti/drivers/power/PowerCC32XX_asm.asm:62:错误:所选处理器不支持请求的特殊用途寄存器-`mrs r0、faultmask'
    /ti/drivers/power/PowerCC32XX_asm.asm:64:错误:所选处理器不支持所请求的特殊用途寄存器-`mrs r0、basepri '
    /ti/drivers/power/PowerCC32XX_asm.asm:66:错误:所选处理器不支持所请求的特殊用途寄存器-`mrs r0、control'
    ./ti/drivers/power/PowerCC32XX_asm.asm:69:错误:错误指令`mov32 R1、PowerCC32XX_RESUMELPD'
    ./ti/drivers/power/PowerCC32XX_asm.asm:71:错误:错误指令`分支到已刷新的进入 LPDS 函数指针'
    `s/ti/drivers/power/PowerCC32XX_asm.asm:74:错误:错误指令“永远不能在这里!”
    ./ti/drivers/power/PowerCC32XX_asm.asm:`:错误:行末尾有垃圾,第一个无法识别的字符为“=”
    ./ti/drivers/power/PowerCC32XX_asm.asm:79:错误:错误指令`s检测代码:代码:NOROOT'
    ./ti/drivers/power/PowerCC32XX_asm.asm:80:错误:错误指令`thum'
    ./ti/drivers/power/PowerCC32XX_asm.asm:82:错误:类型说明符中出现意外字符`w'
    ./ti/drivers/power/PowerCC32XX_asm.asm:82:错误:错误指令`nop.w'
    ./ti/drivers/power/PowerCC32XX_asm.asm:83:错误:类型说明符中出现意外字符`w'
    `/ti/drivers/power/PowerCC32XX_asm.asm:83:错误:错误指令"nop.w"
    ./ti/drivers/power/PowerCC32XX_asm.asm:84:错误:类型说明符中出现意外字符`w'
    ./ti/drivers/power/PowerCC32XX_asm.asm:84:错误:错误指令`nop.w'
    ./ti/drivers/power/PowerCC32XX_asm.asm:85:错误:类型说明符中出现意外字符`w'
    ./ti/drivers/power/PowerCC32XX_asm.asm:85:错误:错误指令`nop.w'
    ./ti/drivers/power/PowerCC32XX_asm.asm:88:错误:错误指令`mov32 R1、PowerCC32XX_contextSave'
    /ti/drivers/power/PowerCC32XX_asm.asm:90:错误:所选处理器不支持所请求的特殊用途寄存器-`mSR CONTROL、r0'
    /ti/drivers/power/PowerCC32XX_asm.asm:92:错误:所选处理器不支持所请求的特殊用途寄存器-`mSR MSP、r0'
    /ti/drivers/power/PowerCC32XX_asm.asm:94:错误:所选处理器不支持所请求的特殊用途寄存器-`mSR PSP、r0'
    /ti/drivers/power/PowerCC32XX_asm.asm:96:错误:所选处理器不支持所请求的特殊用途寄存器-`mSR primask、r0'
    /ti/drivers/power/PowerCC32XX_asm.asm:98:错误:所选处理器不支持所请求的特殊用途寄存器-`mSR FAULTMASK、r0'
    /ti/drivers/power/PowerCC32XX_asm.asm:100:错误:所选处理器不支持请求的特殊用途寄存器-`mSR basepri、r0'
    ./ti/drivers/power/PowerCC32XX_asm.asm:106:错误:错误指令`结束'
    Makefile:401:目标'dbg/PowerCC32XX_asm.o'的配方失败
    make:***[dbg/PowerCC32XX_asm.o]错误1.

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

    TI ARM 汇编器和 GCC ARM 汇编器已拒绝此文件 PowerCC32XX_ASM.asm。  您需要与提供该文件的任何人取得联系。  询问他们要使用哪些汇编器和构建选项。

    谢谢、此致、

    乔治

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

    嗨、George、

    PowerCC32XX_ASM.asm 文件实际上是一个 TI 文件。 这是大家制作的 Simplelink 库的一部分、因此我假设我应该能够使用 TI 编译器对其进行编译。 它用于大家拥有的电源管理示例。 在该示例中、您是否有关于如何编译此文件的提示? 我尝试检查了编译器输出、看起来它可能是作为库之一的一部分构建的。 我应该使用我的 makefile 来构建 Simplelink 库吗? 如果是、我该怎么做?

    编辑:我发现 arm-eabi-g++-x 汇编器-mcpu=cortex-M4 -mfloat-abi=soft PowerCC32XX_ASM.sm4g 在编译时效果更好、因此我认为.sm4g 文件可能是用于 g++的正确文件。 它现在遇到的问题是在.c 文件中定义的一些变量。

    我认为、能够编译库或能够使用 g++编译.sm4g 文件都应该可以解决我的问题、因此会追加任何有关这两个问题的帮助。

    谢谢!

    查尔斯

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

    嗨、George、

    我明白了。 PowerCC32XX_ASM.sm4g 文件实际上包含与 PowerCC32XX_ASM.asm 相同的汇编器代码、但它的格式为 ARM-eabi-g++(我假设也是 ARM-eabi-gcc、但我没有对此进行测试)。 若要编译文件、只需执行以下操作:

    arm-eabi-g++-c -x 汇编器-mcpu=cortex-M4 -mfloat-abi=soft PowerCC32XX_asm.sm4g

    感谢您的帮助!

    查尔斯