im работает с mips. Я запутался между машинным кодом и кодом mips. если я использую mips, я могу видеть адреса ветви в количестве слов, которые нужно перескакивать из инструкции после ветки. Я не понимаю, как это работает «за саксофоном»? и как в этом случае участвует «сдвиг влево» на 2? Мне нужно слово, которое должно быть выровнено на 4 байта (слово), поэтому на самом деле адрес, который я вижу в mips languge, - это число слов * 4 = количество байтов, которое нам нужно скрыть?расчет филиалов адреса
другой вопрос: если сдвиг влево был на 3? что может случиться? это даст мне неправильный адрес?
благодаря
Все инструкции размер 4 байта, и должен начинаться с адреса, который слово выровнен (кратно 4). Из этого следует, что расстояние между двумя инструкциями всегда будет кратным 4 байтам. Поэтому нет смысла тратить биты, кодирующие расстояние ветвления как количество байтов, когда вы знаете, что он всегда будет кратным 4 (т. Е. Два младших значащих бита всегда будут равны 0). Вместо этого вы сохраняете расстояние, разделенное на 4 (сдвинутое вправо на 2) в слове инструкции, и когда инструкция выполняется, процессор выполняет левое смещение этого значения. – Michael