条件分支的两种基本翻译方法

条件分支的两种基本翻译方法:
1. 使用条件控制
if(test-expr)
	then-statement
else
	else-statement

->

t = test-expr
if(!t)
	goto false;
then-statement
	goto done;
false:
	else-statement
done:
2. 使用条件传送
v = test-expr ? then-expr : else-expr;

->

v = then-expr;
ve = else-expt;
t = test-expr;
if(!t)
	v = ve;
总结

编译器会综合考虑来使用哪种方法?

  • 使用条件传送来翻译是有限制的,并不是所有情况都能使用条件传送来翻译
  • 会考虑条件传送浪费的计算和条件控制由于分支预测错误所造成的性能处罚之间的相对性能。
  • 根据实验测试,只有当两个表达式都很容易计算时,例如一条加法指令,才会使用条件传送。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值