1.条件分支和循环机制:程序的流程分为顺序执行,条件分支和循环三种。顺序执行是指按照地址内容的顺序执行指令。 条件分支是指根据条件执行任意地址的指令。循环是指重复执行同一地址的指令 ,顺序执行的情况比较简单,每执行一个指令程序计数器的值就自动加1。 但若程序中存在条件分支和循环,机器语言的指令就可以将程序计数器的值设定为任意地址(不是+1)。这样一来,程序便可以返回到上一个地址来重复执行同一个指令,或者跳转到任意地址。接下来,我们就以条件分支为例,来具体说明循环时程序计数器的数值设定机制也是一样的。
条件分支和循环中使用的跳转指令,会参照当前执行的运算结果来判断是否跳转。 表1-1所列出的寄存器中,我们提到了标志寄存器。无论当前累加寄存器的运算结果是负数、零还是正数,标志寄存器都会将其保存(也负责存放溢出 。 和奇偶校验的结果)。
2.函数的调用机制:哪怕是高级语言编写的程序,
函数调用处理也是通过把程序计数器的值设定成函数的存储地址来实现的。不过,这和条件分支、循环的机制有所不同,因为单纯的跳转指令无法实现函数的调用。 函数的调用需要在完成函数内部的处理后,处理流程再返回到函数调用点(函数调用指令的下一个地址)。因此,如果只是跳转到函数的人口地址,处理流程就不知道应该返回至哪里了。