Переходы — различия между версиями
Admin (обсуждение | вклад) (Новая страница: « JUMP := 'jmp' @IDENT # Безусловный | 'jnz' VAL, @IDENT, @IDENT # Условный | 'ret' [VAL] # Возврат…») |
(нет различий)
|
Версия 01:24, 15 марта 2018
JUMP := 'jmp' @IDENT # Безусловный | 'jnz' VAL, @IDENT, @IDENT # Условный | 'ret' [VAL] # Возврат/Return
Команда перехода заканчивает каждый блок и передает управление в другое место программы. Целью перехода никогда не должен быть первый блок в функции. Три вида доступных переходов описаны далее в списке.
A jump instruction ends every block and transfers the control to another program location. The target of a jump must never be the first block in a function. The three kinds of jumps available are described in the following list.
Безусловный переход. Переход к исполнению другого блока данной функции.
Unconditional jump. Simply jumps to another block of the same function.
Условный переход. Когда первый аргумент (тип w - word) имеет ненулевое значение, переход осуществляется по первой метке-имени блока, стоящего первым (второй аргумент перехода); иначе переход осуществляется по второй метке-имени блока (третий аргумент перехода). Первый аргумент должен быть типа word; из-за подтипирования long-аргумент может быть корректно обработан, но только его младшие 32 бита будут сравниваться с 0.
Conditional jump. When its word argument is non-zero, it jumps to its first label argument; otherwise it jumps to the other label. The argument must be of word type; because of subtyping a long argument can be passed, but only its least significant 32 bits will be compared to 0.
Функция возврата/return. Завершает выполнение текущей функции, возвращая ее результат в место, где эта функция была вызвана. Возвращаемое значение должно указываться в прототипе функции. Если возвращаемый тип не определен, то возвращаемое значение не может быть использовано.
Function return. Terminates the execution of the current function, optionally returning a value to the caller. The value returned must be of the type given in the function prototype. If the function prototype does not specify a return type, no return value can be used.
Источник: | c9x.me