lis
определяются здесь (http://www-01.ibm.com/support/knowledgecenter/api/content/nl/en-us/ssw_aix_53/com.ibm.aix.aixassem/doc/alangref/fixed_point_load.htm#idx175)
Extended Мнемоник lis rx, value
=> Эквивалент addis rx, 0, value
. иначе Load Немедленное Смещенный
addis
затем определяется как:
Вычисляет адрес от каскадного смещения и базового адреса и загружает результат в регистр общего назначения.
«непосредственная Смещенные нагрузки» операция описана на этой странице (http://www.ibm.com/developerworks/library/l-ppc/):
Удобно, лис (что означает «нагрузка немедленной сдвинута») будет загружать непосредственно в высокие 16 бит GPR , Тогда все, что осталось сделать, это добавить в младшие бит.
Так lis r1, 0x0028
является addis r1, 0, 0x0028
, на английском языке: Установите верхние 16 бит содержимого регистра r1
к 0x0028.
Я считаю ori
«ы определения прямо вперед:
Логически ПРС нижние 16 бит содержимого регистра общего назначения с 16-битовым целым числом без знака и сохраняет результат в другом общем -регулярный регистр.
В вашем примере, ori r1, r1, 0x776F
:
На английском языке: Получить нижние 16-бит, что находится в регистре r1
и OR их 0x776F (1110111 01101111
), а затем сохранить его обратно в r1
.
Так (из моего ограниченного понимания) эти две команды должны формировать 0x0028776F
в регистре r1
тогда и только тогда, когдаr1
обнуляется перед использованием, в противном случае значение конечного результата зависит от значения r1
до, учитывая, что OR
сохранит некоторую информацию.
Это не зависит от исходного содержимого r1; потому что второй операнд 'addis' равен нулю, мы просто устанавливаем' r1' '' (значение << 16) + 0' –