0 / 0 / 0
Регистрация: 17.03.2021
Сообщений: 2
|
|
1 | |
Получить код инструкции "sub $t3, $s4, $s1"30.05.2021, 18:02. Показов 1261. Ответов 16
Метки нет (Все метки)
Есть код на языке ассемблера "sub $t3, $s4, $s1", этот код нужно перевести в двоичную систему счисления. Ничего сложного в этом нет, но есть загвоздка, я не знаю что такое 'imm', всё остальное я вроде понял.
Также закрепил скриншот с примером перевода
0
|
30.05.2021, 18:02 | |
Ответы с готовыми решениями:
16
Нужно засунуть код инструкции в 4 char'a так, чтобы в памяти это был код инструкции. Что такое блоки и инструкции, вложенные инструкции и главные инструкции? Код инструкции в чары С помощью одной инструкции получить вектор |
1976 / 1275 / 130
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
30.05.2021, 22:13 | 2 |
0
|
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
|
|
31.05.2021, 02:02 | 3 |
Лично я вообще ничего не понял. Ни
, ни картинку, на которой якобы какой-то пример.
0
|
Почетный модератор
11525 / 4320 / 448
Регистрация: 12.06.2008
Сообщений: 12,412
|
|
31.05.2021, 10:35 | 4 |
https://www.mips.com/products/... /mips32-2/ там ссылка "The MIPS32 Instruction Set v6.06 (2.3 MB)" (или там есть ещё для старой версии... не знаю, отличаются ли они) и в этом документе ищите описание инструкции sub : страница 398 (или в самом документе её называют 388).
0
|
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,888
|
|
31.05.2021, 11:49 | 5 |
А вас не смущает, что на скриншоте не
sub , а lw ? Это разные инструкции.Каком именно ассемблере? А в чем проблема? Транслируете в бинарник и дизассемблируете обратно. objdump прекрасно показывает код инструкции.
0
|
pyzhman
|
31.05.2021, 12:15
#6
|
0
|
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,888
|
|
31.05.2021, 12:38 | 7 |
pyzhman, вы о чем вообще?
0
|
1976 / 1275 / 130
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
31.05.2021, 13:48 | 8 |
это анекдот такой . Ну, а в контексте - Вами предложенный подход наврядли сильно поможет, ибо для составной инструкции надо знать какие поля и куда кладутся. Вы же предлагаете кодировать вполне конкретные значения переменных. Это немного не то, что нужно ТС.
На мой взгляд, ближе всего предложил вариант ув. Humanoid, т.к. по его ссылке действительно есть четкое представление команды, которую озвучил ТС.
0
|
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,888
|
|
31.05.2021, 15:30 | 9 |
Я тут не увидел пожелания решить задачу в общем виде. Только найти конкретное двоичное представление инструкции sub с конкретными аргументами.
А sub точно составная инструкция? Это ж не lw, где операнд действительно может быть 32-битным и раскладываться в две инструкции.
0
|
1976 / 1275 / 130
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
01.06.2021, 08:12 | 10 |
ну, с точки зрения процессора да, почти каждая инструкция составная. Она состоит из полей бит, включающих в себя, в том числе, операнды.
Некоторые инструкции, возможно, можно считать не составными, но они все равно составные . см.выше
0
|
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,888
|
|
01.06.2021, 10:53 | 11 |
Если все инструкции - составные, зачем усложнять определение? Я-то под составными понял псевдоинструкции, которые записываются одной командой (la, sw), но разворачиваются в несколько. Как макросы, но на уровне языка.
Даже если для ТСа проблема открыть даташит и посмотреть структуру инструкции R-типа, для самопроверки пригодится.
0
|
Почетный модератор
11525 / 4320 / 448
Регистрация: 12.06.2008
Сообщений: 12,412
|
|
02.06.2021, 00:19 | 12 |
В какие? Расчёт адреса и чтение из памяти?
А вообще забавно наблюдать (и принимать участие), как кто-то задаёт вопрос и пропадает, а в теме начинаются бурные обсуждения
0
|
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,888
|
|
02.06.2021, 00:30 | 13 |
Скорее разложение длинного адреса на две части (это для RISC-V, но в MIPS разница невелика).
0
|
Почетный модератор
11525 / 4320 / 448
Регистрация: 12.06.2008
Сообщений: 12,412
|
|||||||||||
02.06.2021, 01:00 | 14 | ||||||||||
А зачем ему делить адрес? Я всегда считал, что там полноценная шина (например, 32 бита). Я не знаю, что делает инструкция lw в RISC-V, но в MIPS'е - это чтение 32-битного слова из памяти. Записывается она как
Есть ещё несуществующие инструкции, вроде li, move и т.п., которые проще для чтения, но в MIPS'е они не существуют и ассемблер их заменяет на какие-нибудь add и addiu... или даже может заменить на несколько инструкций.
0
|
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,888
|
|
02.06.2021, 01:09 | 15 |
Полноценная. Но размер команды всего 32 бита, а туда нужно помимо смещения указать регистр. Скажем, инструкция
lw r5, 0x42000018 транслируется в две команды. Это особенность именно ассемблера, без оптимизаций самого ядра.Еще нагляднее всякие la, li. Имеете в виду псевдонимы вроде nop, которая разворачивается во что-то вроде xor r0, r0, r0. Нет, я не про это, а именно про то, что одна операция в исходном коде превращается в бинарнике в две.
0
|
Почетный модератор
11525 / 4320 / 448
Регистрация: 12.06.2008
Сообщений: 12,412
|
|
02.06.2021, 11:25 | 16 |
В MIPS'е инструкция lw - это одна инструкция. Она как была одной инструкцией в исходнике, так и остаётся без изменений в бинарнике. Если скомпилировать ассемблерный файл "lw a1, 0x100(a2)" и перевести его в бинарник, то файл будет размером 4 байта. Если скачать тот документ, о котором я писал в четвёртом посте, то там есть описание инструкции lw и то, как она выглядит в скомпилированном виде... в принципе, ТС это как раз и выложил на картинке.
Судя по вашему примеру, для RISC-V указывается абсолютный адрес прямо в инструкции. Конечно, такую инструкцию невозможно сделать, без разворачивания (если адрес 32 бита и размер инструкций 32 бита). Но в MIPS адрес указывается в виде номера регистра и 16-битного смещения относительно этого регистра. Поэтому оно без проблем умещается в одну инструкцию.
0
|
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,888
|
|
02.06.2021, 12:54 | 17 |
Не совсем так. Там можно указать абсолютный адрес (это развернется в две инструкции), а можно смещение относительно регистра.
http://matthews.sites.truman.e... ctions.pdf
0
|
02.06.2021, 12:54 | |
02.06.2021, 12:54 | |
Помогаю со студенческими работами здесь
17
Компилируется ли unsafe-код в машинные инструкции Перевести в машинный код следующие инструкции Отладка, gdb. Код написан на Си, выполнить по шагам инструкции асма Как возможно выйти в инструкции switch в начало самой инструкции при нажатии "не правильной" кнопки При подключении admob в юнити сделал ВСЁ по инструкции, вроде бы реклама появляется, когда этого требует код, но Как получить исходный код *.exe или отредактировать его исполняемый код? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |