Машинен код
Справочното ръководство за архитектура на ARM посочва машинния код за инструкции. Страница A7-68 описва формата за LSR инструкция с незабавно въвеждане.
//I can't post an image because of low reputation
Bit - 15 14 13 12 11 | 10 6 | 5 3 | 2 0
Val - 0 0 0 0 1 | immed_5 | Rm | Rd
Syntax
LSR <Rd>, <Rm>, #<immed_5>
where:
<Rd> Is the destination register for the operation.
<Rm> Is the register containing the value to be shifted.
<immed_5> Specifies the shift amount, in the range 1 to 32.
Shifts by 1 to 31 are encoded directly in immed_5.
A shift by 32 is encoded as immed_5 == 0.
С вашите инструкции, immed_5 = 00010, Rm = 001, and Rd = 000
Така че двоичната инструкция е: 00001 00010 001 000
или в шестнадесетичен: 0x0111
.
Едно автобусно разписание
Целта на планирането на инструкция на машина с една шина е да се посочи кои регистри въвеждат данни в шината, кои регистри четат данни от шината и в какъв ред трябва да се случи това. Важно нещо, което трябва да запомните е, че само една стойност трябва да бъде поставена в автобуса в даден момент.
Ето пример за планиране с помощта на първата ви инструкция. Това използва X като ALU входен регистър и Y като ALU изходен регистър. Това също предполага, че ALUsll ще измести наляво стойността в шината със стойността, съхранена в X.
LSR R0,R1,#2
Вземете инструкцията в регистъра на инструкциите
- PCout, MARin, MEMread
Достъп до мястото на паметта на текущата инструкция
- MDRlatch
Заредете стойността от паметта в MDR
- MDRout, IRin
Пуснете инструкцията в регистъра на инструкциите
Извършване на специфични за инструкции операции
- IRimmediateout, Xin
Поставете незабавната стойност (#2) от инструкцията в X
- R1out, ALUsll, Yin
Поставете стойността от R1 в шината, кажете на ALU да премести и запазете резултата в Y
- Yout, R0in Съхранявайте резултата в R0
Напреднете компютъра за следващата инструкция
- PCout, SetXto2, ALUadd, Yin
- Ти, PCin
Можете да използвате същите тези методи, за да определите превода на машинния код и планирането на една шина на всяка друга ARM инструкция.
person
Bonsaigin
schedule
18.02.2015
echo 'lsr r0, r1, #2' | arm-none-eabi-as -al
- person Notlikethat   schedule 16.02.2015