Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 17.03.2021
Сообщений: 2
1

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

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

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

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

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

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

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

16
1895 / 1213 / 121
Регистрация: 04.01.2010
Сообщений: 4,339
30.05.2021, 22:13 2
Цитата Сообщение от fandre Посмотреть сообщение
на языке ассемблера
какая платформа? ассемблер разный для каждого типа процессора.
0
пофигист широкого профиля
4336 / 2843 / 809
Регистрация: 15.07.2013
Сообщений: 16,485
31.05.2021, 02:02 3
Лично я вообще ничего не понял. Ни
Цитата Сообщение от fandre Посмотреть сообщение
"sub $t3, $s4, $s1"
, ни картинку, на которой якобы какой-то пример.
0
Почетный модератор
11194 / 4150 / 416
Регистрация: 12.06.2008
Сообщений: 12,001
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
2978 / 1786 / 357
Регистрация: 09.09.2017
Сообщений: 7,402
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
2978 / 1786 / 357
Регистрация: 09.09.2017
Сообщений: 7,402
31.05.2021, 12:38 7
pyzhman, вы о чем вообще?
0
1895 / 1213 / 121
Регистрация: 04.01.2010
Сообщений: 4,339
31.05.2021, 13:48 8
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
вы о чем вообще?
это анекдот такой . Ну, а в контексте - Вами предложенный подход наврядли сильно поможет, ибо для составной инструкции надо знать какие поля и куда кладутся. Вы же предлагаете кодировать вполне конкретные значения переменных. Это немного не то, что нужно ТС.

На мой взгляд, ближе всего предложил вариант ув. Humanoid, т.к. по его ссылке действительно есть четкое представление команды, которую озвучил ТС.
0
2978 / 1786 / 357
Регистрация: 09.09.2017
Сообщений: 7,402
31.05.2021, 15:30 9
Цитата Сообщение от Voland_ Посмотреть сообщение
Это немного не то, что нужно ТС.
Цитата Сообщение от fandre Посмотреть сообщение
"sub $t3, $s4, $s1", этот код нужно перевести в двоичную систему счисления
Я тут не увидел пожелания решить задачу в общем виде. Только найти конкретное двоичное представление инструкции sub с конкретными аргументами.
Цитата Сообщение от Voland_ Посмотреть сообщение
ибо для составной инструкции
А sub точно составная инструкция? Это ж не lw, где операнд действительно может быть 32-битным и раскладываться в две инструкции.
0
1895 / 1213 / 121
Регистрация: 04.01.2010
Сообщений: 4,339
01.06.2021, 08:12 10
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
А sub точно составная инструкция?
ну, с точки зрения процессора да, почти каждая инструкция составная. Она состоит из полей бит, включающих в себя, в том числе, операнды.
Некоторые инструкции, возможно, можно считать не составными, но они все равно составные .
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Я тут не увидел
см.выше
Цитата Сообщение от fandre Посмотреть сообщение
Также закрепил скриншот с примером перевода
0
2978 / 1786 / 357
Регистрация: 09.09.2017
Сообщений: 7,402
01.06.2021, 10:53 11
Цитата Сообщение от Voland_ Посмотреть сообщение
ну, с точки зрения процессора да, почти каждая инструкция составная. Она состоит из полей бит, включающих в себя, в том числе, операнды.
Если все инструкции - составные, зачем усложнять определение? Я-то под составными понял псевдоинструкции, которые записываются одной командой (la, sw), но разворачиваются в несколько. Как макросы, но на уровне языка.
Цитата Сообщение от Voland_ Посмотреть сообщение
Также закрепил скриншот с примером перевода
Даже если для ТСа проблема открыть даташит и посмотреть структуру инструкции R-типа, для самопроверки пригодится.
0
Почетный модератор
11194 / 4150 / 416
Регистрация: 12.06.2008
Сообщений: 12,001
02.06.2021, 00:19 12
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Это ж не lw, где операнд действительно может быть 32-битным и раскладываться в две инструкции.
В какие? Расчёт адреса и чтение из памяти?

А вообще забавно наблюдать (и принимать участие), как кто-то задаёт вопрос и пропадает, а в теме начинаются бурные обсуждения
0
2978 / 1786 / 357
Регистрация: 09.09.2017
Сообщений: 7,402
02.06.2021, 00:30 13
Цитата Сообщение от Humanoid Посмотреть сообщение
В какие? Расчёт адреса и чтение из памяти?
Скорее разложение длинного адреса на две части (это для RISC-V, но в MIPS разница невелика).
0
Миниатюры
Получить код инструкции "sub $t3, $s4, $s1"   Получить код инструкции "sub $t3, $s4, $s1"  
Почетный модератор
11194 / 4150 / 416
Регистрация: 12.06.2008
Сообщений: 12,001
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
2978 / 1786 / 357
Регистрация: 09.09.2017
Сообщений: 7,402
02.06.2021, 01:09 15
Цитата Сообщение от Humanoid Посмотреть сообщение
А зачем ему делить адрес? Я всегда считал, что там полноценная шина (например, 32 бита).
Полноценная. Но размер команды всего 32 бита, а туда нужно помимо смещения указать регистр. Скажем, инструкция lw r5, 0x42000018 транслируется в две команды. Это особенность именно ассемблера, без оптимизаций самого ядра.
Еще нагляднее всякие la, li.
Цитата Сообщение от Humanoid Посмотреть сообщение
Есть ещё несуществующие инструкции, вроде li, move
Имеете в виду псевдонимы вроде nop, которая разворачивается во что-то вроде xor r0, r0, r0. Нет, я не про это, а именно про то, что одна операция в исходном коде превращается в бинарнике в две.
0
Почетный модератор
11194 / 4150 / 416
Регистрация: 12.06.2008
Сообщений: 12,001
02.06.2021, 11:25 16
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
а именно про то, что одна операция в исходном коде превращается в бинарнике в две.
В MIPS'е инструкция lw - это одна инструкция. Она как была одной инструкцией в исходнике, так и остаётся без изменений в бинарнике. Если скомпилировать ассемблерный файл "lw a1, 0x100(a2)" и перевести его в бинарник, то файл будет размером 4 байта. Если скачать тот документ, о котором я писал в четвёртом посте, то там есть описание инструкции lw и то, как она выглядит в скомпилированном виде... в принципе, ТС это как раз и выложил на картинке.

Судя по вашему примеру, для RISC-V указывается абсолютный адрес прямо в инструкции. Конечно, такую инструкцию невозможно сделать, без разворачивания (если адрес 32 бита и размер инструкций 32 бита). Но в MIPS адрес указывается в виде номера регистра и 16-битного смещения относительно этого регистра. Поэтому оно без проблем умещается в одну инструкцию.
0
2978 / 1786 / 357
Регистрация: 09.09.2017
Сообщений: 7,402
02.06.2021, 12:54 17
Цитата Сообщение от Humanoid Посмотреть сообщение
Судя по вашему примеру, для RISC-V указывается абсолютный адрес прямо в инструкции.
Не совсем так. Там можно указать абсолютный адрес (это развернется в две инструкции), а можно смещение относительно регистра.
http://matthews.sites.truman.e... ctions.pdf
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.06.2021, 12:54

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

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

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

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

Как получить текстовый код цвета через код
Как получить текстовый код цвета через код ? Добавлено через 8 минут нашел Color color =...

Можно ли считав код с сайта через HttpRequest получить код Javascript который динамически подгружается?
Вот допустим я считал c сайта https://www.betfair.com.au/exchange/plus/football код через...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.