java中or和and的优先级_x86处理器汇编语言AND和OR运算符优先级

Irvine的书使用MASM作为参考汇编程序 .

作者正在谈论MASM operators 1 - 这些运营商仅为了我们人类的利益而受到支持 .

它们让我们对立即数和常量执行算术,但它们使用的表达式必须最终在汇编时解析为一个值 .

aConstant EQU 35

mov edx, NOT 1 ;Same as mov edx, 0fffffffeh

mov edx, aConstant AND (NOT 3) ;Same as mov edx, 32

如果您尝试使用其中一个具有非常量值的运算符,MASM将相应地抱怨:

错误A2026:不变的预期

请注意,这里 AND , OR 和 NOT 不是同名指令,存在歧义 - MASM可以从上下文中消除歧义:

mov ax, STATUS_REG OR ENABLE_BIT ;Operator

or ax, bx ;Instruction

从人的角度来看,指令是顺序执行的,因此它们不需要任何优先顺序 .

运算符形成表达式并且必须给出排序 .

我在MASM文档中找不到这样的顺序,所以我通过汇编这段代码直接测试了它

;Results only refer to bit0 of the immediate.

;NOT 0 is 0ffffffffh but I consider it a 1 by the virtue of above.

mov edx, 0 AND (1 OR 1) ;0

mov edx, (0 AND 1) OR 1 ;1

mov edx, 0 AND 1 OR 1 ;? -> 1

mov edx, (NOT 0) AND 0 ;0

mov edx, NOT (0 AND 0) ;1

mov edx, NOT 0 AND 0 ;? -> 0

mov edx, (NOT 0) OR 1 ;1

mov edx, NOT (0 OR 1) ;0

mov edx, NOT 0 OR 1 ;? -> 1

? -> 行是实际测试,从检查生成的二进制可执行文件中收集结果 .

这证明订单是(从最高到低): NOT , AND 和 OR .

当然,这符合通常的逻辑法则和欧文本身,因为我认为引用应解释为:

NOT运算符具有最高优先级,后跟AND,然后是OR

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值