ZHCUAQ1F july 2015 – april 2023
汇编优化器指令为汇编优化过程提供数据并对其进行控制。汇编优化器会优化过程中包含的线性汇编代码;即 .proc 和 .endproc 指令中或 .cproc 和 .endproc 指令中的代码。如果不在线性汇编文件中使用 .cproc/.proc 指令,则汇编优化器不会优化代码。本节介绍了这些指令以及可与汇编优化器一起使用的其他指令。
表 5-2 总结了汇编优化器指令。它提供了每个指令的语法,每个指令的说明以及您应记住的任何限制。有关详细信息,请参阅特定指令主题。
在表 5-2 和详细指令主题中,使用了以下参数术语:
符号变量名称或机器寄存器
用于存储器引用的符号(不是寄存器)
机器(硬件)寄存器
符号用户名或符号寄存器名称
符号变量名称或机器寄存器
句法 | 说明 | 限制 |
---|---|---|
.call [ret_reg =] func_name (argument1 , argument2 , ...) | 调用函数 | 仅在过程中有效 |
.circ symbol1 / register1 [,symbol2 / register2] | 声明循环寻址 | 必须手动插入循环寻址的设置/拆卸代码。仅在过程中有效 |
label .cproc [argument1 [, argument2 , …]] | 启动 C/C++ 可调用过程 | 必须与 .endproc 一起使用 |
.endproc | 结束 C/C++ 可调用过程 | 必须与 .cproc 一起使用 |
.endproc [variable1 [, variable2,…]] | 结束过程 | 必须与 .proc 一起使用 |
.map symbol1 / register1 [,symbol2 / register2 ] | 将符号分配给寄存器 | 必须使用实际的机器寄存器 |
.mdep [memref1[, memref2 ]] | 表示存储器依赖 | 仅在过程中有效 |
.mptr {variable|memref}, base [+ offset] [, stride] | 避免存储器组冲突 | 仅在过程中有效 |
.no_mdep | 函数中没有存储器别名 | 仅在过程中有效 |
.pref symbol / register1[/register2 /...] | 将符号分配给集合中的寄存器 | 必须使用实际的机器寄存器 |
label .proc [variable1 [, variable2 , …]] | 启动过程 | 必须与 .endproc 一起使用 |
.reg symbol1[, symbol2 ,…] | 声明变量 | 仅在过程中有效 |
.rega symbol1[, symbol2 ,…] | 将符号分区到 A 侧寄存器 | 仅在过程中有效 |
.regb symbol1[, symbol2 ,…] | 将符号分区到 B 侧寄存器 | 仅在过程中有效 |
.reserve [register1 [, register2 ,…]] | 阻止编译器分配寄存器 | 仅在过程中有效 |
.return [argument] | 将值返回到过程 | 仅在 .cproc 过程中有效 |
label .trip min | 指定行程计数值 | 仅在过程中有效 |
.volatile memref1[, memref2 ,…] | 指定存储器参考易失性 | 如果在中断期间可以修改引用,则使用 --interrupt_threshold=1 |