| [内容] |
| 速度優先最適化(-Kspeed)以外の最適化オプションが指定された時に、コード巻き上げ最適化を実施します。 |
| [効果] |
| コードサイズの改善が期待できます。 |
| [旧版との互換モード] |
| 本機能を抑止する場合は、以下のオプションを指定して下さい。 -Tc,-zmpa=Ano_code_hoisting |
| [内容] |
| セクション名の変更を、モジュール内で複数指定できる機能として、#pragma segmentを追加しました。 構文は、#pragma sectionと同じで,以下の通りです。 #pragma segmentDEFSECT[=NEWNAME][,attr=SECTATTR][,locate=ADDR] DEFSECT : CODE, INIT, CONST, DATA, DIRINIT, DIRDATA, IO SECTATTR : CODE, DATA, CONST, DIR, IO #pragma segmentが記述された行以降に定義された関数または、変数に作用します。この指定は、次に同じDEFSECTの#pragma segmentが記述されるまで有効です(DEFSECTが異なる#pragma segmentの記述は、互いに影響しません)。 #pragma segmentが記述された行以降にそれが作用する関数、および変数の定義がない場合は、その#pragma segmentを無視します。 DEFSECTにINTVECTが指定された場合は、警告メッセージを出力して、セクション名変更の指定を無視します。 #pragma segmentと#pragma sectionまたは、-sオプションが同時に指定された時は、#pragma segmentで指定されていないセクションについてのみ#pragma section,-sオプションが作用します。 [C source] #pragma segment CODE=program1 void func1(void){} #pragma segment DATA=ram1 int a1; #pragma segment CODE=program2 void func2(void){} #pragma segment DATA=ram2 int a2; [ASM output] .SECTION ;ram2、DATA、ALIGN=4 .GLOBAL _a2 _a2: .RES.B 4 .SECTION ram1、DATA、ALIGN=4 .GLOBAL _a1 _a1: .RES.B 4 .SECTION program1、CODE、ALIGN=2 .GLOBAL _func1 _func1: RET .SECTION program2、CODE、ALIGN=2 .GLOBAL _func2 _func2: RET |