Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 17.03.2021
Сообщений: 2
1

Получить код инструкции "sub $t3, $s4, $s1"

30.05.2021, 18:02. Показов 1261. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть код на языке ассемблера "sub $t3, $s4, $s1", этот код нужно перевести в двоичную систему счисления. Ничего сложного в этом нет, но есть загвоздка, я не знаю что такое 'imm', всё остальное я вроде понял.
Также закрепил скриншот с примером перевода
Миниатюры
Получить код инструкции "sub $t3, $s4, $s1"  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.05.2021, 18:02
Ответы с готовыми решениями:

Нужно засунуть код инструкции в 4 char'a так, чтобы в памяти это был код инструкции.
Доброго времени суток. Есть дизассемблированный код. Нужно засунуть код иструкции в 4 чара так,...

Что такое блоки и инструкции, вложенные инструкции и главные инструкции?
Что это такое?

Код инструкции в чары
Доброго времени суток. Есть дизассемблированный код. Нужно засунуть код иструкции в 4 чара так,...

С помощью одной инструкции получить вектор
с помощью одной инструкции получите вектор (x1+1,x2+1,x3+1,x4+1), если x равен x=1:4

16
1976 / 1275 / 130
Регистрация: 04.01.2010
Сообщений: 4,607
30.05.2021, 22:13 2
Цитата Сообщение от fandre Посмотреть сообщение
на языке ассемблера
какая платформа? ассемблер разный для каждого типа процессора.
0
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
31.05.2021, 02:02 3
Лично я вообще ничего не понял. Ни
Цитата Сообщение от fandre Посмотреть сообщение
"sub $t3, $s4, $s1"
, ни картинку, на которой якобы какой-то пример.
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
Цитата Сообщение от fandre Посмотреть сообщение
sub $t3, $s4, $s1", этот код нужно перевести в двоичную систему счисления. Ничего сложного в этом нет, но есть загвоздка, я не знаю что такое 'imm'
А вас не смущает, что на скриншоте не sub, а lw? Это разные инструкции.
Цитата Сообщение от fandre Посмотреть сообщение
Есть код на языке ассемблера
Каком именно ассемблере?
Цитата Сообщение от fandre Посмотреть сообщение
этот код нужно перевести в двоичную систему счисления
А в чем проблема? Транслируете в бинарник и дизассемблируете обратно. objdump прекрасно показывает код инструкции.
0
pyzhman
31.05.2021, 12:15
  #6

Не по теме:

Цитата Сообщение от fandre Посмотреть сообщение
что такое 'imm'
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
показывает код
- Приборы?
- Тридцать восемь.
- Что тридцать восемь?
- А что приборы?

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
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
вы о чем вообще?
это анекдот такой . Ну, а в контексте - Вами предложенный подход наврядли сильно поможет, ибо для составной инструкции надо знать какие поля и куда кладутся. Вы же предлагаете кодировать вполне конкретные значения переменных. Это немного не то, что нужно ТС.

На мой взгляд, ближе всего предложил вариант ув. Humanoid, т.к. по его ссылке действительно есть четкое представление команды, которую озвучил ТС.
0
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,888
31.05.2021, 15:30 9
Цитата Сообщение от Voland_ Посмотреть сообщение
Это немного не то, что нужно ТС.
Цитата Сообщение от fandre Посмотреть сообщение
"sub $t3, $s4, $s1", этот код нужно перевести в двоичную систему счисления
Я тут не увидел пожелания решить задачу в общем виде. Только найти конкретное двоичное представление инструкции sub с конкретными аргументами.
Цитата Сообщение от Voland_ Посмотреть сообщение
ибо для составной инструкции
А sub точно составная инструкция? Это ж не lw, где операнд действительно может быть 32-битным и раскладываться в две инструкции.
0
1976 / 1275 / 130
Регистрация: 04.01.2010
Сообщений: 4,607
01.06.2021, 08:12 10
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
А sub точно составная инструкция?
ну, с точки зрения процессора да, почти каждая инструкция составная. Она состоит из полей бит, включающих в себя, в том числе, операнды.
Некоторые инструкции, возможно, можно считать не составными, но они все равно составные .
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Я тут не увидел
см.выше
Цитата Сообщение от fandre Посмотреть сообщение
Также закрепил скриншот с примером перевода
0
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,888
01.06.2021, 10:53 11
Цитата Сообщение от Voland_ Посмотреть сообщение
ну, с точки зрения процессора да, почти каждая инструкция составная. Она состоит из полей бит, включающих в себя, в том числе, операнды.
Если все инструкции - составные, зачем усложнять определение? Я-то под составными понял псевдоинструкции, которые записываются одной командой (la, sw), но разворачиваются в несколько. Как макросы, но на уровне языка.
Цитата Сообщение от Voland_ Посмотреть сообщение
Также закрепил скриншот с примером перевода
Даже если для ТСа проблема открыть даташит и посмотреть структуру инструкции R-типа, для самопроверки пригодится.
0
Почетный модератор
11525 / 4320 / 448
Регистрация: 12.06.2008
Сообщений: 12,412
02.06.2021, 00:19 12
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Это ж не lw, где операнд действительно может быть 32-битным и раскладываться в две инструкции.
В какие? Расчёт адреса и чтение из памяти?

А вообще забавно наблюдать (и принимать участие), как кто-то задаёт вопрос и пропадает, а в теме начинаются бурные обсуждения
0
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,888
02.06.2021, 00:30 13
Цитата Сообщение от Humanoid Посмотреть сообщение
В какие? Расчёт адреса и чтение из памяти?
Скорее разложение длинного адреса на две части (это для RISC-V, но в MIPS разница невелика).
Миниатюры
Получить код инструкции "sub $t3, $s4, $s1"   Получить код инструкции "sub $t3, $s4, $s1"  
0
Почетный модератор
11525 / 4320 / 448
Регистрация: 12.06.2008
Сообщений: 12,412
02.06.2021, 01:00 14
А зачем ему делить адрес? Я всегда считал, что там полноценная шина (например, 32 бита). Я не знаю, что делает инструкция lw в RISC-V, но в MIPS'е - это чтение 32-битного слова из памяти. Записывается она как
Assembler
1
lw rd, offset(rt)
Например
Assembler
1
lw a1, 0x100(a2)
Прочитает память по адресу a2+0x100 и значение из этой памяти запишет в регистр a1. С программной точки зрения это одна инструкция. Но как она исполняется внутри процессора я не знаю. Но на мой взгляд маловероятно, что он будет как-то разбивать адрес на две части.
Есть ещё несуществующие инструкции, вроде li, move и т.п., которые проще для чтения, но в MIPS'е они не существуют и ассемблер их заменяет на какие-нибудь add и addiu... или даже может заменить на несколько инструкций.
0
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,888
02.06.2021, 01:09 15
Цитата Сообщение от Humanoid Посмотреть сообщение
А зачем ему делить адрес? Я всегда считал, что там полноценная шина (например, 32 бита).
Полноценная. Но размер команды всего 32 бита, а туда нужно помимо смещения указать регистр. Скажем, инструкция lw r5, 0x42000018 транслируется в две команды. Это особенность именно ассемблера, без оптимизаций самого ядра.
Еще нагляднее всякие la, li.
Цитата Сообщение от Humanoid Посмотреть сообщение
Есть ещё несуществующие инструкции, вроде li, move
Имеете в виду псевдонимы вроде nop, которая разворачивается во что-то вроде xor r0, r0, r0. Нет, я не про это, а именно про то, что одна операция в исходном коде превращается в бинарнике в две.
0
Почетный модератор
11525 / 4320 / 448
Регистрация: 12.06.2008
Сообщений: 12,412
02.06.2021, 11:25 16
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
а именно про то, что одна операция в исходном коде превращается в бинарнике в две.
В 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
Цитата Сообщение от Humanoid Посмотреть сообщение
Судя по вашему примеру, для RISC-V указывается абсолютный адрес прямо в инструкции.
Не совсем так. Там можно указать абсолютный адрес (это развернется в две инструкции), а можно смещение относительно регистра.
http://matthews.sites.truman.e... ctions.pdf
0
02.06.2021, 12:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.06.2021, 12:54
Помогаю со студенческими работами здесь

Компилируется ли unsafe-код в машинные инструкции
Компилируется ли такой код в машинные инструкции или все же в IL? Заранее благодарен.

Перевести в машинный код следующие инструкции
mov ebx,eax mov esi, mov ,ecx

Отладка, gdb. Код написан на Си, выполнить по шагам инструкции асма
Приветствую! Программма написана на си и откомпилена gcc с отладочной информацией. Как выполнить...

Как возможно выйти в инструкции switch в начало самой инструкции при нажатии "не правильной" кнопки
В целом у меня вопрос такой: Как возможно выйти в инструкции switch в начало самой инструкции при...

При подключении admob в юнити сделал ВСЁ по инструкции, вроде бы реклама появляется, когда этого требует код, но
В инструкции написано, поставить галочку в enabled, этого окна у меня вообще нет, хоть реклама и...

Как получить исходный код *.exe или отредактировать его исполняемый код?
Собственно возможно ли декомпилить его так, чтобы можно было потом обратно скомпилировать? Или...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru