Диванный эксперт
![]() ![]() |
||||||
RISC-V ISA / Почему константы так странно кодируются?27.12.2024, 00:53. Показов 1122. Ответов 14
Метки нет Все метки)
(
Изучаю архитектуру RISC-V и постоянно возникает вопрос: что ж так все запутано?
Если декодирование представить шлейфом из проводов: то на фотке, еще норм =\ Кодом приходится "шлейфы перекручивать"
Бит тут, бит там... Какой в этом смысл?
0
|
27.12.2024, 00:53 | |
Ответы с готовыми решениями:
14
Ansys почему так странно обозначаются СК Почему так странно работает калькулятор Почему мой div так странно позиционируется? |
![]() 4054 / 2606 / 432
Регистрация: 09.09.2017
Сообщений: 11,615
|
|||
27.12.2024, 22:22 | |||
Я, конечно, никогда risc-v ядра не разрабатывал. Но, раз уж там решили сделать именно такое кодирование и задокументировали на уровне стандарта, видимо, в реальных железках это имеет смысл (а для некоторых случаев смысл даже поясняется в документации). Ну там при декодировании произвольной команды можно сразу выковырять все аргументы. Например:
Добавлено через 2 минуты
0
|
Тутошний я
![]() |
|
31.12.2024, 02:35 | |
Всё там нормально кодируется.
По битам 0-1 сразу видно, 16 битная инструкция или 32 битная. И биты под регистры нормально выделены. Перепутаны только биты в инструкциях с константами. Где место было, туда биты и вставили. Добавлено через 4 минуты Да и не требуется никому особо кодировка. Я раза три всего вручную пытался раскодировать. Ассемблер и дизассемблер сами с кодировкой хорошо справляются.
0
|
![]() 4054 / 2606 / 432
Регистрация: 09.09.2017
Сообщений: 11,615
|
|||
31.12.2024, 09:45 | |||
0
|
Тутошний я
![]() |
|
31.12.2024, 11:21 | |
Тогда стоит упомянуть и порядок байт Little Endian. Как раз для чтения битов 0-1.
0
|
Диванный эксперт
![]() ![]() |
|||
31.12.2024, 17:40 [ТС] | |||
Разминка для мозга - совсем не похоже на "обычное" программирование. Добавлено через 23 минуты Для "сжатых"(16 бит) - там вот в кодировке констант полная чехарда... Добавлено через 1 час 13 минут
0
|
259 / 189 / 29
Регистрация: 26.11.2022
Сообщений: 794
|
|
31.12.2024, 17:59 | |
это потому что не надо думать в концепцциях ООП.
ООП - Это всего лишь один из многих способов, которым хорошо пользоваться только для решения определённых задач. А verilog/hdl очень хорошо выкручивают мозг в другую сторону. Поначалу больно, но потом нормально. я бы сказал что как упражнение писать ядро risc-v это перебор особенно если писать аппаратуру ещё тяжело.
0
|
Диванный эксперт
![]() ![]() |
||
31.12.2024, 18:15 [ТС] | ||
Не по теме:
ИМХО, сложнее всякие контроллеры периферии описывать(SPI / I2C / etc) В общем по теме: можно принять за ответ "так исторически сложилось".
0
|
![]() 4054 / 2606 / 432
Регистрация: 09.09.2017
Сообщений: 11,615
|
||||||
31.12.2024, 19:50 | ||||||
0
|
Диванный эксперт
![]() ![]() |
|
31.12.2024, 21:11 [ТС] | |
COKPOWEHEU, так скажем: FPGA - текущее увлечение.
* Архитектура RISC-V была выбрана по причине открытости + под неё уже есть компиляторы. * про поддержку инструкций: хз. может и не нужно это сжатие... * Переходы - это комбинация вычислений адреса с последующим чтением из памяти. * ИМХО, для "железа" нет разницы(почти), какой бит где, но описывать это - тот еще геморрой. Не по теме: С Наступающим) Добавлено через 55 минут
0
|
![]() 4054 / 2606 / 432
Регистрация: 09.09.2017
Сообщений: 11,615
|
||||
31.12.2024, 21:37 | ||||
0
|
Диванный эксперт
![]() ![]() |
||||
31.12.2024, 21:54 [ТС] | ||||
Там даже нет особой разницы 32, 64 или большая разрядность... А вот сжатие инструкций - там способ расшифровки инструкций/констант от нее зависит.
0
|
![]() 4054 / 2606 / 432
Регистрация: 09.09.2017
Сообщений: 11,615
|
|||
01.01.2025, 01:01 | |||
0
|
01.01.2025, 01:01 | |
Помогаю со студенческими работами здесь
15
Обьясните, почему код так странно считает факториалы Почему так странно обрабатывается запрос по селекции дат? Почему VBA так странно делает сравнение значений? Почему так странно срабатывает селекция дат в запросе? Почему так странно находятся углы в сферической системе координат Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Dev-c++5.11 Покорение вершины
russiannick 02.06.2025
С утра преследовала одна мысль - вот бы выучить С++. Сказано-сделано. Окончив смену, скачал в интернете бестселлер Дэвиса Dev-C++ для чайников. Книга оказалась интересной и я скачал среду, на примере. . .
|
Тестирование Pull Request в Kubernetes с GitHub Actions и GKE
Mr. Docker 02.06.2025
Мы все знаем, что тестирование на локальной машине или в изолированном CI-окружении — это не совсем то же самое, что тестирование в реальном кластере Kubernetes. Контекстно-зависимые ошибки, проблемы. . .
|
Оптимизация CMake для ускорения сборки
bytestream 02.06.2025
Вы когда-нибудь ловили себя на мысле, что пока ваш проект компилируется, можно успеть сварить кофе, прочитать главу книги или даже сбегать в соседний офис? Если да, то добро пожаловать в клуб. . .
|
JS String.prototype.localeCompare()
mr_dramm 02.06.2025
скопировано из этой темы чтобы не потерялось.
localeCompare без указания локали для сравнения строк под капотом использует Intl. Collator , который работает согласно Unicode Collation Algorithm. . .
|
Облако проектов
russiannick 01.06.2025
Слава Джа, написал прогу для компиляции. Значит написал компилятор?
Обьем кода 300+ строк. Язык-яву. Вводим данные, заполняем поля, тычем радиобаттоны. И по итогу в поле результат получам листинг. . .
|
Rust и квантовые вычисления: интеграция с Q# и Qiskit
golander 01.06.2025
Мир квантовых вычислений традиционно оставался закрытым клубом для высокоуровневых языков типа Python и специализированных DSL вроде Q#. Однако в последние годы Rust начал тихую революцию в этой. . .
|
Кэш REDIS и C#
UnmanagedCoder 01.06.2025
Redis (Remote Dictionary Server) - это ультраскоростное хранилище данных в оперативной памяти, работающее по принципу "ключ-значение". Суть проста: данные хранятся не на диске, а прямо в RAM, что. . .
|
Lenovo IH110CX Rev: 1.0 motherboard manual
Maks 01.06.2025
|
Размещения без повторений
VistaSV30 31.05.2025
Код возвращает список вариантов размещений
A^{k}_{n}=\frac{n!}{(n-k)!}
from itertools import permutations
def pwr(k, n): # Размещение без повторений (Placement without repetition)
if k. . .
|
Redis и Node.js с TypeScript - решения для высоконагруженных систем
Reangularity 31.05.2025
Redis (Remote Dictionary Server) — сверхбыстрое хранилище данных в памяти, способное обрабатывать операции за микросекунды. И что особенно важно для нас — с удивительно простым API. А теперь. . .
|