跳到和跳转标记
编程语言实现编译程序使用的机器指令可以分为两种: 运算指令和跳转指令
高级语言里的运算指令用运算符号代替,而跳转指令可分为条件跳转和无条件跳转
无条件跳转在极语言里叫"跳到",就是直接跳到某个标记处,跳转语句就是指条件跳转
如果和否则语句就是对条件条件指令的封装,括号里比较两个结果大小并指定跳转条件
如果(数>值){关闭网络;退出程序}就是如果数大于值的话
执行关闭网络和退出程序这两个函数,实现原理是先比较数和值的大小,然后执行条件跳转
代码里写的是大于,编译时的指令就是它反向条件:小于或等于,跳转到}这里也就是两句代码之后
最终生成的指令是如果数小于或等于值,则跳转到关闭网络和退出程序这两句代码之后
处理器判断不符合小于或者等于这个条件,就会执行这两句代码,符合条件就跳过不执行
如果代码之后又有否则语句时该如何处理?否则{值=数}多了一层逻辑判断关系
只需要在}这里加一条直接跳到{值=数}这个代码之后,这两层逻辑关系的跳转过程也就实现了
处理器比较数和值的大小,符合大于条件就执行关闭网络和退出程序这两句代码再跳过{值=数}这句代码
符合小于或等于条件就跳过关闭网络和退出程序这两句代码去执行{值=数}这句代码
还有循环语句也是通过跳转实现的: 循环{数++}(数=10000)
这个执行过程就是先让数递增,然后把数和一万进行比较,如果不等于就直接跳到循环这里
数就会继续增加,如果等于一万就不再跳回去,处理器就会继续执行后面的代码
循环的第二种写法 循环(数<10000){数++}它会更复杂一些
先比较数和一万,反向判断如果数大于或等于一万就跳转到{数++}的后面,只有这个跳转并不能循环
还需要在数++之后插入一条指令,直接跳到循环这里继续比较大小并进行条件跳转
循环的第三种写法: 循环(10000){数++}无条件但有次数
它的实现原理是先存入条件里一万这个数,执行完{数++}之后对数值递减,结果不为0就跳回去
这种循环不用比较,递减是运算指令,同样会有各种状态标志,然后根据标志进行条件跳转
循环的第四种写法: 循环{数++}无条件也无次数
这种循环就是无限循环,常用于DLL进程或者新创建的线程里,实现原理就更为简单
执行{数++}然后无条件跳到循环这里继续执行,无条件循环只有程序关闭时才会结束
跳转指令在高级语言里几乎就用不到,极语言里可以使用,且记跳转不要和跳到语句弄错
在如果和循环语句中也可以指令这些条件,例如: 如果(数#3值) 循环(数#4值)
在数学运算之后,可以使用 跳转 #0 标记意思是如果溢出则转移到标记处
标记是在一段文字之后加上冒号或者@符号,例如下面的代码:
整数 值=数*10000;
跳转 #1 标记1
信息框(0,"结果值溢出","错误提示",错误图标)
标记1:
通常跳转条件是反向设置,不溢出就转到标记1这里,那么溢出就会弹出错误提示
实际开发中使用跳到要比跳转语法更多一些,比如实现一个特殊的循环过程
标记1:
{过程代码...}跳到 标记1
这段代码就是最简单的无限循环,再举一个替换文字中某个字符的例子
重查:
整数 数值=查找字符(文字1,\?)
如果(数值>0){数值(0)=\!;跳到 重查}
在极语言的判断条件里是不会进行赋值操作的
循环(数值=查找字符(文字1,\?))这样写只会比较数值和查找结果是否相等
循环于(整数 数值=查找字符(文字1,\?),数值>0,数值(0)=33)这样写也不行
因为循环于的第一步是申请变量并向它初始化赋值,它是不会循环执行这个赋值操作的
要实现不用跳到语句进行替换文字,就需要用特殊的指针写法:
循环(查找字符(文字1,\?))
{数值=?;数值(0)=\!}
这里?是当前查找字符的内存地址,向这里写入一字节数值
用法 | 作用解释 |
跳转 = 标记 | 相等则转移到标记 |
跳转 != 标记 | 不相等则转移到标记 |
跳转 <> 标记 | 不相等则转移到标记 |
跳转 > 标记 | 大于则转移到标记(比较无符号数) |
跳转 < 标记 | 小于则转移到标记(比较无符号数) |
跳转 <= 标记 | 小于或等于则转移到标记(比较带符号数) |
跳转 =< 标记 | 小于或等于则转移到标记(比较带符号数) |
跳转 >= 标记 | 大于或等于则转移到标记(比较无符号数) |
跳转 => 标记 | 大于或等于则转移到标记(比较无符号数) |
跳转 #0 标记 | 若溢出则转移到标记 |
跳转 #1 标记 | 不溢出则转移到标记 |
跳转 #2 标记 | 小于则转移到标记(比较无符号数) |
跳转 #3 标记 | 大于或等于/进位为零则转移到标记(比较无符号数) |
跳转 #4 标记 | 相等则转移到标记 |
跳转 #5 标记 | 不相等则转移到标记 |
跳转 #6 标记 | 小于或等于则转移到标记(比较无符号数) |
跳转 #7 标记 | 大于则转移到标记(比较无符号数) |
跳转 #8 标记 | 结果为负则转移到标记 |
跳转 #9 标记 | 结果为正则转移到标记 |
跳转 #A 标记 | 奇偶位为偶则转移到标记 |
跳转 #B 标记 | 奇偶位为奇则转移到标记 |
跳转 #C 标记 | 小于则转移(比较带符号数) |
跳转 #D 标记 | 大于或等于则转移(比较带符号数) |
跳转 #E 标记 | 小于或等于(比较带符号数) |
跳转 #F 标记 | 大于则转移(比较带符号数) |