LINUX.ORG.RU

RISC-V и выравнивание адресов

 ,


0

2

Разбираюсь с контроллером gd32vf103 (это тот, который на risc-v, а не на arm). В документации написано, что работать с невыровненными адресами он не умеет, и должен генерировать исключение 4 (load address misaligned, ошибка выравнивания памяти).

Note: the Bumblebee Core does not support misaligned memory access, so a misaligned memory access will cause in an exception.

На команду ecall он реагирует нормально (бросает исключение 11 или 8, которые за собственно ecall зарезервированы). На попытку выполнить .word 0xFFFFFFFF реагирует нормально (исключение 2, illegal instruction). А вот lw t0, 1(zero) почему-то заканчивается успешно: он читает байты 1, 2, 3 и 4 как будто так и надо. Причем что с правами машины, что юзера - безразлично. С другими адресами тоже самое.

Собственно вопрос: как его сломать так, чтобы он сломался? Или это я где-то в документации не увидел, что он научился читать данные с любого места?

А вот lw t0, 1(zero) почему-то заканчивается успешно

Потому что так написано в доке, доступной по первой же ссылке в гугле, где тебя, видимо, зобанели?

For best performance, the effective address for all loads and stores should be naturally aligned
for each data type (i.e., on a four-byte boundary for 32-bit accesses, and a two-byte boundary for
16-bit accesses). The base ISA supports misaligned accesses, but these might run extremely slowly
depending on the implementation
LamerOk ★★★★★
()
Ответ на: комментарий от LamerOk

Это дока на что? А то доков там куча разных.

Конкретно на свое ядро я процитировал, что невыровненный доступ не поддерживается, и под него специально предусмотрены исключения.

COKPOWEHEU
() автор топика

cast @X512 . По крайней мере, кого я здесь знаю, что делал что-то внятное с RISC-V.

SkyMaverick ★★★★★
()
Ответ на: комментарий от COKPOWEHEU

Это дока на что?

Ты сам-то как думаешь, на что может быть дока в вопросах работы машинных инструкций? «The RISC-V Instruction Set Manual, Document Version 2.2», ессно.

Конкретно на свое ядро я процитировал,

В первой попавшейся из гугла спеке на бамблбии англюсиком в аски написано:

1.1. Introduction to the risc-v instruction set
The standard RISC-V instruction set
document version followed by the
Bumblebee kernel is: "Instruction Set
Document Version 2.2" 

Мой хрустальный шар говорит мне, что в спеке на твоё ядро есть что-то похожее.

LamerOk ★★★★★
()
Ответ на: комментарий от COKPOWEHEU

Это дока на что? А то доков там куча разных.

Ага, нашел. В «Bumblebee Processor Core Concise Data Sheet» говорится, что невыровненный доступ есть. В «User Manual» тоже.

А в «Bumblebee Processor Core Instruction Set Architecture Manual» и «The RISC-V Instruction Set Manual» - что нет.

Ладно, User Manual из перечисленных выглядит наиболее авторитетным.

COKPOWEHEU
() автор топика
Ответ на: комментарий от LamerOk

Я тебе цитату оттуда привёл, алё.

Я больше верю написанному в документе от производителя, чем форуму. И если там пишут, что «Note that load/store/AMO address-misaligned and page-fault exceptions may have either higher or lower priority than load/store/AMO page-fault and access-fault exceptions.», то, наверное, эти исключения все же есть.

COKPOWEHEU
() автор топика
Ответ на: комментарий от X512

Может всё таки поддерживает?

Насколько я понял, стандарт RISC-V это не оговаривает (раньше оговаривал, мол невыровненного доступа вообще нет): некоторые ядра могут поддерживать, некоторые нет. Если говорить о контроллере, то User Manual и Datasheet будут наиболее достоверными источниками. Как я уже сказал, в User Manual'е нашлось упоминание, что все-таки поддерживается. Значит, будем считать, что поддерживается, и все хорошо.

Откуда цитата?

Bumblebee Processor Core. Instruction Set Architecture Manual, раздел, посвященный mcause и кодам исключений.

COKPOWEHEU
() автор топика
Последнее исправление: COKPOWEHEU (всего исправлений: 1)
Ответ на: комментарий от COKPOWEHEU

Bumblebee Processor Core. Instruction Set Architecture Manual, раздел, посвященный mcause и кодам исключений.

Коды исключениний для невыровненного доступа к памяти всегда есть (это часть базовой спецификации RISC-V priveleged), но они могут не использоваться.

X512 ★★★★★
()
Ответ на: комментарий от COKPOWEHEU

Цитата из документа

Я больше верю написанному в документе от производителя, чем форуму.

Признайся честно, ты балуешься веществами?

LamerOk ★★★★★
()
Ответ на: комментарий от X512

но они могут не использоваться.

Могут. Но тут авторы специально акцентировали внимание, что в Bumblebee невыровненного доступа нет, и его возникновение приведет к исключению.

COKPOWEHEU
() автор топика
Ответ на: комментарий от COKPOWEHEU

Я больше верю написанному в документе от производителя, чем форуму

ожидаемый вопрос... что тогда тута спрашиваешь? иди читай доки ,которым ты веришь)))) и ваще, когда я спрашивал, ты заходил и гадил мне, что мол надо самому до всего доходить, а не попрошайничать на форумах подсказками. еще ты всех презивал не помогать мне. А так ты красавчик... это норм прям что вот заюзал другую архитекруру. прям обнял бы)))) приятны такие темы, они не просто приятны, но и полезны. Я иного мнения о фрумах ,поэтому то что написал выше, конечно же шутка. мололец, что спрашиваешь, когда не знаешь. так то бы ты не спрашивал, а долждался, когда я создам тему, но я не юзаю risk-V. поэтому хош не хош приходится))) даже?

Assembler
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.