Что такое битность команды?

Объясните, пожалуйста, новичку - чем обуславливается битность команд Ассемблера?
Чем отличаются 16-ти битные команды от 32-х битных?

Раньше я думал, что битность команды определяется битностью операндов. Но недавно нашел перечень команд, которые в книге ("Ядро Cortex - МЗ компании ARM. Полное руководство", с.62) описаны как 32-битные, но работают с 16-битными операндами.
  • Вопрос задан
  • 1358 просмотров
Решения вопроса 1
saboteur_kiev
@saboteur_kiev Куратор тега Программирование
software engineer
Битность команды - это сколько бит (обычно байт) она занимает.

В зависимости от архитектуры процессора, команда может быть выполнена за один такт, если это позволяет разрядность процессора, или за несколько тактов.

На 8-битном "псевдопроцессоре" можно предположить например такие команды

Поместить 16-битное значение в регистр AX (двумя командами)
mov AX, 0xFFFF ( 3 байта)
lea 0x1234, AX (3 байта)

Поместить 16-битное значение по 16-битному адресу (одной командой)
lea 0x1234, 0xFFFF (5 байт)

1) С точки зрения логики - в первом случае 2 команды, во втором одна команда - то есть вроде как второй случай должен работать в два раза быстрее.

2) С точки зрения 8-битного процессора, в первом случае у нас 6 тактов, во втором 5 тактов, то есть быстрее не в два раза, а на 20%.

3) С точки зрения логики 16-битного процессора, количество тактов меньше, но
В первом случае 3 байта - два такта + 3 байта - еще два такта, 4 такта всего
во втором случае 5 байт - 3 такта всего. Быстрее на 25%

4) С точки зрения логики 32-битного процессора количество тактов еще меньше, при этом
в первом случае 3 байта + 3 байта - 2 такта
во втором случае 5 байт - 2 такта, разницы нет.

Примеры выше - утрированы.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Therapyx
@Therapyx
Data Science
вот хороший скрипт, то что тебе надо на 10-й странице
users.ece.utexas.edu/~valvano/EE345M/Arm_EE382N_4.pdf
Все разжовывать долго, а уже ночь ))
82ab4bc5cacb44cba5e7e7f57cedf22f.png

а насчет 16 битных инструкциях. Это ты скорее о Thumb instructions set.
тут - https://stackoverflow.com/questions/10638130/what-... тут описаны плюсы, минусы итд)

А так вот наглядный пример:
ARM:
mov r3, #0
loop
 subs r0, r0, r1
 addge r3,r3,#1
 bge loop
 add r2, r0, r1

=> 5 * 4 байта = 20 байт.
А теперь тоже самое на Thumb
mov r3, #0
loop
 add r3, #1
 sub r0, r1
 bge loop
 sub r3, #1
 add r2,r0,r1

=> 6 * 2 байта = 12 байт.
Ответ написан
@svolch
Когда то давным давно процессоры только манипулировали 4 битными регистрами
Потом 8 битными
Потом 16 битными
Потом 32 битными (кое где осталось, в частности на смартфонах большинство)
Сейчас 64 битными (на десктопах везде уже, на смартфонах только появляется)

Смысл в том, что числа, которые процессор может, к примеру, сложить - скольки-то там битные.

То есть если у тебя 16-битная операция, а тебе нужно сложить 100 000 + 12 000 - где первое число уже выходит за пределы 16 бит - то ты сможешь это сделать только частями, в 2 этапа, в 2 операции.
Сначала младшие разряды, а потом уже старшие.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы