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
汇编语言中几乎所有的值和操作数都是表达式,可能是以下任何一种:
本节定义了本文档中引用的几种表达式。一些指令操作数接受的表达式类型有限。例如,.if 指令要求其操作数是具有整数值的绝对常量表达式。在汇编代码的上下文中,“绝对”意味着必须在汇编时知道表达式的值。
常量表达式是指任何不以任何方式涉及寄存器或存储器引用的表达式。立即操作数通常不接受寄存器或内存引用。必须为其指定一个常量表达式。常量表达式可能是以下任何一种:
地址常量表达式是常量表达式的一个特例。一些需要地址值的立即操作数可以接受一个符号加一个加数;例如,一些分支指令。该符号必须具有地址值,并且可以是外部符号。该加数必须是具有整数值的绝对常量表达式。例如,一个有效的地址常量表达式为“array+4”。
常量表达式可以是绝对表达式或可重定位表达式。绝对意味着在汇编时已知。可重定位意味着会是常量的,但直到链接时才已知。外部符号即使引用同一模块中定义的符号,也是可重定位的符号。
绝对常量表达式不能引用表达式中任何位置的任何外部符号。换句话说,绝对常量表达式可以是以下任何一种:
可重定位的常量表达式引用至少一个外部符号。对于 ELF,此类表达式最多可包含一个外部符号。可重定位的常量表达式可以是以下任何一种:
在某些情况下,可重定位的地址表达式的值在汇编时可能是已知的。例如,相对位移分支可能会分支到在同一个段中进行定义的标签。