ZHCUAV7Z september 1995 – march 2023 66AK2E05 , 66AK2H06 , 66AK2H12 , 66AK2H14 , AM1705 , AM1707 , AM1802 , AM1806 , AM1808 , AM1810 , AM5K2E04 , OMAP-L132 , OMAP-L137 , OMAP-L138 , SM470R1B1M-HT , TMS470R1A288 , TMS470R1A384 , TMS470R1A64 , TMS470R1B1M , TMS470R1B512 , TMS470R1B768
初始化字段
.fieldvalue[, size in bits]
.field 指令用于初始化存储器单个字内的多位字段(32 位)。此指令有两个操作数:
*** WARNING! line 21: W0001: Field value truncated to 1
.field 3, 1
连续的 .field 指令从当前字开始将值打包成指定位数。字段从字的最高有效位开始打包,随着更多字段的添加,移向最低有效位。如果汇编器遇到不适合当前字的字段大小,则会写出该字,并开始将字段打包成下一个字。
.field 指令类似于 .bits 指令(请参阅 .bits 主题)。但是,.bits 指令不会强制对齐到字段边界,并且不会在到达字边界时自动递增 SPC。
使用 .align 指令来强制下一个 .field 指令开始打包一个新字。
如果使用标签,则其指向包含指定字段的字节。
当用户在 .struct/.endstruct 序列中使用 .field 时,.field 会定义成员的大小;但不会初始化存储器。如需更多信息,请参阅 .struct/.endstruct/.tag 主题。
该示例展示了如何将字段打包成一个字。在填满一个字并开始下一个字之前,SPC 不会改变。
1 ************************************
2 ** Initialize a 14-bit field. **
3 ************************************
4 00000000 2AF00000 .field 0ABCh, 14
5
6 ************************************
7 ** Initialize a 5-bit field **
8 ** in the same word. **
9 ************************************
10 00000000 2AF14000 L_F: .field 0Ah, 5
11
12 ************************************
13 ** Write out the word. **
14 ************************************
15 .align 4
16
17 ************************************
18 ** Initialize a 4-bit field. **
19 ** This fields starts a new word.**
20 ************************************
21 00000004 C0000000 x: .field 0Ch, 4
22
23 ************************************
24 ** 32-bit relocatable field **
25 ** in the next word. **
26 ************************************
27 00000008 00000004' .field x
28
29 ************************************
30 ** Initialize a 32-bit field. **
31 ************************************
32 0000000c 00004321 .field 04321h, 32
图 5-6 展示了该示例中的指令如何影响存储器。