【发布时间】:2020-03-16 07:43:43
【问题描述】:
正如标题,规范说“循环”是
开头带有标签的块,可用于形成循环。
对于“块”:
块结构的开始,一个带有标签的指令序列。
但是借助“br”(用于将分支切换到标记块),即使使用“块”,我也可以形成相同的控制结构,对吧?.那么,这两条指令有什么区别呢?
【问题讨论】:
标签: webassembly
正如标题,规范说“循环”是
开头带有标签的块,可用于形成循环。
对于“块”:
块结构的开始,一个带有标签的指令序列。
但是借助“br”(用于将分支切换到标记块),即使使用“块”,我也可以形成相同的控制结构,对吧?.那么,这两条指令有什么区别呢?
【问题讨论】:
标签: webassembly
块标签的br 跳转到包含的指令序列的end -- 它的行为类似于C 中的break 语句。
循环标签的br 跳转到所包含指令序列的开始 -- 它的行为类似于C 中的continue 语句。
前者启用向前跳转,后者启用向后跳转。两者都无法表达。
【讨论】:
不,你不能阻止标签在末尾,因为它说块在末尾有标签
LOOP START
label:
SOME CODE
IF condtion BR label:
EVEN MORE CODE
LOOP END
将执行一次 SOME CODE。比重复一些代码直到条件不成立。而不是执行更多的代码
BLOCK START
SOME CODE
IF condition BR label:
EVEN MORE CODE
label:
BLOCK END
将只执行一次 SOME CODE。当条件不成立时,可能会执行更多代码。
【讨论】: