2015-10-24 6 views

ответ

1

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 сохранит некоторую информацию.

+1

Это не зависит от исходного содержимого r1; потому что второй операнд 'addis' равен нулю, мы просто устанавливаем' r1' '' (значение << 16) + 0' –