Chinaunix首页 | 论坛 | 博客
  • 博客访问: 217696
  • 博文数量: 72
  • 博客积分: 3890
  • 博客等级: 中校
  • 技术积分: 810
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-05 20:00
文章分类

全部博文(72)

文章存档

2010年(20)

2009年(52)

我的朋友

分类:

2009-02-13 22:07:58





ARM汇编语言中的表达式和运算符

 在汇编语言程序设计中,也经常使用各种表达式,表达式一般由变量、常量、运算符和括号构成。常用的表达式有数字表达式、逻辑表达式和字符串表达式,其运算次序遵循如下的优先级:

— 优先级相同的双目运算符的运算顺序为从左到右。

— 相邻的单目运算符的运算顺序为从右到左,且单目运算符的优先级高于其他运算符。

— 括号运算符的优先级最高。

1、 数字表达式及运算符

数字表达式一般由数字常量、数字变量、数字运算符和括号构成。与数字表达式相关的运算符如下:

— “ + ” 、 “ - ” 、 “ × ” 、 “ / ” 及 “ MOD ” 算术运算符

以上的算术运算符分别代表加、减、乘、除和取余数运算。例如,以 X 和 Y 表示两个数字表达式,则:

X + Y 表示 X 与 Y 的和。

X - Y 表示 X 与 Y 的差。

X × Y 表示 X 与 Y 的乘积。

X/Y 表示 X 除以 Y 的商。

X : MOD : Y 表示 X 除以 Y 的余数。

— “ ROL ” 、 “ ROR ” 、 “ SHL ” 及 “ SHR ” 移位运算符

以 X 和 Y 表示两个数字表达式,以上的移位运算符代表的运算如下:

X : ROL : Y 表示将 X 循环左移 Y 位。

X : ROR : Y 表示将 X 循环右移 Y 位。

X : SHL : Y 表示将 X 左移 Y 位。

X : SHR : Y 表示将 X 右移 Y 位。

— “ AND ” 、 “ OR ” 、 “ NOT ” 及 “ EOR ” 按位逻辑运算符

以 X 和 Y 表示两个数字表达式,以上的按位逻辑运算符代表的运算如下:

X : AND : Y 表示将 X 和 Y 按位作逻辑与的操作。

X : OR : Y 表示将 X 和 Y 按位作逻辑或的操作。

: NOT : Y 表示将 Y 按位作逻辑非的操作。

X : EOR : Y 表示将 X 和 Y 按位作逻辑异或的操作。

2、 逻辑表达式及运算符

逻辑表达式一般由逻辑量、逻辑运算符和括号构成,其表达式的运算结果为真或假。与逻辑表达式相关的运算符如下:

— “ = ” 、 “ > ” 、 “ < ” 、 “ >= ” 、 “ <= ” 、 “ /= ” 、 “ <> ”运算符

以 X 和 Y 表示两个逻辑表达式,以上的运算符代表的运算如下:

X = Y 表示 X 等于 Y 。

X > Y 表示 X 大于 Y 。

X < Y 表示 X 小于 Y 。

X >= Y 表示 X 大于等于 Y 。

X <= Y 表示 X 小于等于 Y 。

X /= Y 表示 X 不等于 Y 。

X <> Y 表示 X 不等于 Y 。

— “ LAND ” 、 “ LOR ” 、 “ LNOT ” 及 “ LEOR ” 运算符

以 X 和 Y 表示两个逻辑表达式,以上的逻辑运算符代表的运算如下:

X : LAND : Y 表示将 X 和 Y 作逻辑与的操作。

X : LOR : Y 表示将 X 和 Y 作逻辑或的操作。

: LNOT : Y 表示将 Y 作逻辑非的操作。

X : LEOR : Y 表示将 X 和 Y 作逻辑异或的操作。

3、 字符串表达式及运算符

字符串表达式一般由字符串常量、字符串变量、运算符和括号构成。编译器所支持的字符串最大长度为 512 字节。常用的与字符串表达式相关的运算符如下:

— LEN 运算符

LEN 运算符返回字符串的长度(字符数),以 X 表示字符串表达式,其语法格式如下:

: LEN : X

— CHR 运算符

CHR 运算符将 0 ~ 255 之间的整数转换为一个字符,以 M 表示某一个整数,其语法格式如下:

: CHR : M

— STR 运算符

STR 运算符将将一个数字表达式或逻辑表达式转换为一个字符串。对于数字表达式, STR 运算符将其转换为一个以十六进制组成的字符串;对于逻辑表达式, STR 运算符将其转换为字符串 T 或F ,其语法格式如下:

: STR : X

其中, X 为一个数字表达式或逻辑表达式。

— LEFT 运算符

LEFT 运算符返回某个字符串左端的一个子串,其语法格式如下:

X : LEFT : Y

其中: X 为源字符串, Y 为一个整数,表示要返回的字符个数。

— RIGHT 运算符

与 LEFT 运算符相对应, RIGHT 运算符返回某个字符串右端的一个子串,其语法格式如下:

X : RIGHT : Y

其中: X 为源字符串, Y 为一个整数,表示要返回的字符个数。

— CC 运算符

CC 运算符用于将两个字符串连接成一个字符串,其语法格式如下:

X : CC : Y

其中: X 为源字符串 1 , Y 为源字符串 2 , CC 运算符将 Y 连接到 X 的后面。

4、 与寄存器和程序计数器(PC)相关的表达式及运算符

常用的与寄存器和程序计数器( PC )相关的表达式及运算符如下:

— BASE 运算符

BASE 运算符返回基于寄存器的表达式中寄存器的编号,其语法格式如下:

: BASE : X

其中, X 为与寄存器相关的表达式。

— INDEX 运算符

INDEX 运算符返回基于寄存器的表达式中相对于其基址寄存器的偏移量,其语法格式如下:

: INDEX : X

其中, X 为与寄存器相关的表达式。

5、 其他常用运算符

— ?运算符

?运算符返回某代码行所生成的可执行代码的长度,例如:

?X

返回定义符号 X 的代码行所生成的可执行代码的字节数。

— DEF 运算符

DEF 运算符判断是否定义某个符号,例如:

: DEF : X

如果符号 X 已经定义,则结果为真,否则为假。

阅读(2383) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~