ОРТ2/К3 Фебруар 2021

Извор: SI Wiki
< ОРТ2
Датум измене: 22. фебруар 2021. у 23:42; аутор: Fedja (разговор | доприноси) (+k2 2021)
(разл) ← Старија измена | Тренутна верзија (разл) | Новија измена → (разл)
Пређи на навигацију Пређи на претрагу

Колоквијум 2

Посматра се део рачунара који чине меморија и процесор. Меморија је капацитета 216 бајтова. Ширина меморијске речи је 1 бајт. Процесор је са једноадресним форматом инструкција. Подаци су дужине 8 бита без знака, а адресе дужине 16 бита и заузимају по две суседне меморијске локације, при чему се старији бајт налази на вишој, а млађи бајт на нижој адреси.

У процесору постоји регистар програмског бројача PC дужине 2 бајта, адресни регистар меморије MAR дужине 2 бајта, прихватни регистар податка меморије MDR дужине 1 бајт, прихватни регистар инструкције IR дужине 4 бајта, акумулатор A дужине 1 бајт, прихватни регистар податка B дужине 1 бајт, регистри опште намене R0 до R15 дужине 2 бајта, програмска статусна реч PSW дужине 1 бајт. Инструкције су дужине 1, 2, 3 или 4 бајта.

Приликом читања податка из регистара опште намене, узима се нижих 8 бита.

Битови 7 и 6 првог бајта инструкције су 00 за све инструкције скока. Код инструкција условног скока бит 5 првог бајта инструкције је 0, док код инструкција безусловног скока бит 5 првог бајта инструкције је 1. Инструкција условног скока је инструкција условног скока уколико је резултат нула (JZ), а инструкције безусловног скока су инструкције безусловног скока (JMP) и инструкција скока на потпрограм (JSR). Битовима 4 до 0 првог бајта инструкције специфира се код операције и на основу тога су за инструкције JZ, JMP и JSR усвојени кодови операције 00000000, 00100000 и 00100001, респективно. Инструкције JZ, JMP и JSR се реализују као апсолутни скокови, при чему је адреса дата другим и трећим бајтом инструкције. Дужина инструкција је 3 бајта.

Битови 7 и 6 првог бајта инструкције су 11 за све адресне и безадресне инструкције.

Бит 5 првог бајта инструкције је 0 за безадресне инструкције. Безадресне инструкције су инструкције стављања садржаја акумулатора на стек (PUSH), пуњења акумулатора садржајем са стека (POP), инкрементирање акумулатора (INC) и повратка из потпрограма (RTS). Битовима 4 до 0 првог бајта инструкције специфицира се код операције за безадресне инструкције. На основу тога су за инструкције PUSH, POP, INC и RTS усвојени кодови операција 11000000, 11000001, 11000010 и 11000011, респективно. Дужина инструкција је 1 бајт.

Бит 5 првог бајта инструкције је 1 за адресне инструкције. Адресне инструкције су инструкција преноса у акумулатор (LD), инструкција преноса из акумулатора (ST), логичка инструкција "и" (AND), инструкција аритметичког померања операнда једно место удесно која смешта резултат у акумулатор (ASR) и инструкција безусловног скока на срачунату адресу (JADR). Битовима 4 до 0 првог бајта инструкције специфицира се код операције за адресне инструкције. На основу тога су за инструкције LD, ST, AND, ASR и JADR усвојени кодови операција 11100000, 11100001, 11100010, 11100011 и 11100100 респективно. Дужина инструкција је 2, 3 или 4 бајта и зависи од специфицираног начина адресирања.

Начини адресирања су специфицирани битовима 7, 6 и 5 другог бајта инструкције и то на следећи начин: 000-регистарско индиректно адресирање (regind), 001-регистарско директно адресирање (regdir), 010-меморијско индиректно адресирање (memind), 011-релативно адресирање са померајем (pcrel) и 100-непосредно адресирање (immed). Код регистарско директног и регистарског индиректног адресирања, користи се неки од регистара опште намене R0 до R15 специфицираних битовима од 4 до 1 другог бајта. Бит 0 другог бајта се не користи. Дужина инструкција је 2 бајта. Код меморијског индиректног адресирања 16 битна адреса меморијске локације је дата трећим и четвртим бајтом инструкције. Битови 4 до 0 другог бајта инструкције се не користе. Дужина инструкције је 4 бајта. Код релативног адресирања са померајем трећи и четврти бајт инструкције садрже 16 битни померај који је дат као целобројна величина без знака. Битови 4 до 0 другог бајта инструкције се не користе. Дужина инструкција је 4 бајта. Код непосредног адресирања 8 битни операнд дат је трећим бајтом инструкције. Битови 4 до 0 другог бајта инструкције се не користе. Дужина инструкције је 3 бајта.

Стек расте према нижим меморијским локацијама, а регистар SP указује на последњу заузету меморијску локацију. Процесор нема могућност обраде прекида.

Процесор нема подршку за детектовање грешке у адресирању у првој фази, већ тако прочитане инструкције се игноришу у осталим фазама.

Први корак сваке фазе сматрати да се означава са FETCH, ADDR, EXEC.

  1. Написати изразе за генерисање сигнала свих начина адресирања. IR регистар се попуњава од виших ка нижим битовима.
  2. Написати изразе за генерисање сигнала операција и то само за INC, AND и ASR.
  3. Нацртати дијаграм тока фаза формирања адресе и читања операнда и фазе извршавање операције.