All streams
Search
Write a publication
Pull to refresh
4
1.6
Send message

Проблему с БП и ИМ1821ВМ85А решает, они вроде доступнее.

Первый раз слышу аббревиатуру AMX в контексте армовых процессоров от Apple. Это официальная аббревиатура? Интересно как они с Интелом договорились...

Да, как же его умудрялись собрать по журналу "Радио" без интернета... У друга такой был в 80х (правда, отец работал системотехником, так что знания и доступ к программатору и прочему были).

Не знал, что под CP/M был и настоящий PL/I, спасибо.

Насколько помню, тогда скорее Килдэлл не договорился с IBM и разрабатывать ОС и прочее стал Гейтс. Но Килдэлл - это скорее про PL/M, вроде от мейнфреймовского PL/I он отличается (хотя сужу по статьям, личного опыта нет).

Я про число регистров (или места в стеке, если строковых параметров штук 10-20) на передачу аргументов, понятно, что при обработке понадобятся ещё. И в любом случае это была скорее шутка - рад, что у Pl/I всё ещё есть своя ниша.

Угу, пихать в стек/регистры целых два значения, чтобы передать строку - это ж убиться можно )

Не знал, что оно ещё живо (и с кодом на нём не сталкивался)... Просто на C и подобных языках с null-terminated string объединить строки с разными символами в конце в принципе не получится; с дупликацией в начале поиграться можно, но gcc/clang этим не заморачиваются.

Да, в плане алгоритмики (найти строку минимального размера, в которую как подстроки входят заданные N строк) задачка хорошая - я только о том, что сгегенировать код по результату работы этого алгоритма можно без проблем.

Ну в Байкале всё таки стандартное ядро от ARM, superscalar/OoO они сами не делали. SCR7 от Syntacore хороший пример, но вроде как Syntacore не чисто российская компания.

В используемом автором языке (когда строки передаются в формате указатель+длина) проблем быть не должно.

Спасибо, вот это уже интересно, надо почитать повнимательнее.

Но проблема в том, что даже если компилятор сгенерирует инструкции чтения в порядке, соответствующем коду программы, реальный порядок выполнения на процессоре может меняться в зависимости от состояния пайплайна - так что от гарантий языка толку мало. Если в приведённом примере *timer может меняться кем то ещё (неважно, другим потоком или внешним устройством) - то мы имеем data race, исправлять который надо соответствующими средствами языка и процессора.

если это две команды из двух разных точек программы? Которые исполняются в различных контекстах.

Мы тут обсуждаем два чтения внутри одного арифметического выражения без сайд эффектов (t = *timer - *timer; ). В общем случае, когда между чтениями есть ещё какой то код, переставлять конечно можно не всегда.

Ну так переупорядочивание двух соседних чтений sequential consistency никак не нарушает.

Мы тут о порядке соседних обращений к памяти. Он в нормальных условиях (когда это действительно память, которая возвращает то, что в последний раз было записано) значения не имеет и перестановка на результат не влияет, так что процессор может делать так, как удобнее. Для "ненормальных" условий (когда данные может менять другой поток или внешнее устройство) есть специальные команды, без них ни процессор, ник компилятор корректность не гарантируют.

ключевое слово DRF-SC

Ну да, всё правильно написано - "This model assumes that hardware has memory synchronization operations separate from ordinary memory reads and writes. Ordinary memory reads and writes may be reordered between synchronization operations, but they may not be moved across them." Нужен порядок - используйте synchronization operations.

Ссылку на соответствующий пункт в документации можно? Неформальное объяснение на https://developer.arm.com/documentation/100941/0101/The-memory-model говорит скорее об обратном.

будут расставляться fence в результате трансляции volatile

Попробовал, ничего не ставится.

Последней такой архитектурой, вроде, была DEC Alpha.

Архитектура ARM прошла мимо вас?

Information

Rating
1,446-th
Registered
Activity