ZHCUAQ1G June 2015 – August 2025
通过使用 C6000 分析工具,您可以识别代码中需要重写为线性汇编语言的时间关键段。为汇编优化器编写的源代码与汇编源代码类似。但是,线性汇编代码不需要进行分区、调度或寄存器分配。目的是让汇编优化器为您确定此信息。当您编写线性汇编代码时,您需要了解以下各项:
| 选项 | 效果 | 请参阅 |
|---|---|---|
| --ap_extension | 更改汇编优化器源文件的默认扩展名 | 节 3.3.10 |
| --ap_file | 更改汇编优化器源文件的标识方式 | 节 3.3.8 |
| --disable_software_pipelining | 关闭软件流水线 | 节 4.6.1 |
| --debug_software_pipeline | 生成详细的软件流水线信息 | 节 4.6.2 |
| --interrupt_threshold=n | 指定中断阈值 | 节 3.12 |
| --keep_asm | 保留汇编语言 (.asm) 文件 | 节 3.3.2 |
| --no_bad_aliases | 假设没有存储器别名使用 | 节 4.12.3 |
| --opt_for_space=n | 在四个级别(n=0、1、2 或 3)上控制代码大小 | 节 4.9 |
| --opt_level=n | 提高优化级别(n=0、1、2 或 3) | 节 4.1 |
| --quiet | 抑制进度消息 | 节 3.3.2 |
| --silicon_version=n | 选择目标版本 | 节 3.3.5 |
| --skip_assembler | 仅编译或汇编优化(不汇编) | 节 3.3.2 |
| --speculate_loads=n | 允许对具有分界地址范围的加载进行推测执行 | 节 4.6.3 |
与其他代码生成工具一样,您可能需要修改线性汇编代码,直到对其性能感到满意。如果这样做,您可能需要为线性汇编添加更多细节。例如,您可能需要对某些寄存器进行分区或分配。
如果编译器无法使您的指令呈线性(非并行),则会生成错误消息。编译器假定指令按照其在文件中出现的顺序发生。已调度代码是非法的(即使是非并行调度代码)。编译器可能不会检测到已调度代码,但产生的输出可能不是您想要的。