Как стать автором
Обновить
9
0

Пользователь

Отправить сообщение
Целью его оказалось лицензирование легендарной Newton OS. Её он планирует портировать на архитектуру ARM

Но ведь Newton OS с самого начала работала на ARM.
Это не так работает. Компилятор делает оптимизации исходя из того, что код написан правильно и UB не может возникнуть ни при каких входных данных.
То есть если написан memset локальной переменной, которая потом не читается, а размер приходит извне, то такой memset можно удалить.
Это будет undefined behavior.
А разве результат сравнения True гарантированно будет равен 1? Я думал там может получиться любое ненулевое число.
Даже если не использовать никакие особые фичи, то C++ не позволит написать:
int *p = malloc(1);

Хотя в C это валидный код.
Но неоптимизированный код за время своей работы изменит регистры и память, а оптимизированный может по-другому распределить регистры и данные в памяти. Видимо нужны какие-то точки, в которые возможно переключение, и ограничения оптимизаций.
Интересно как происходит hot-swapping одного работающего кода на другой.
Кому интересно как всё было на самом деле, рекомендую www.folklore.org или в виде книги « Revolution in The Valley: The Insanely Great Story of How the Mac Was Made».
Некоторые новые инструкции предназначены именно для ускорения ядра, например XSAVEOPT, XSAVEC, XSAVES.
Как называются разъёмы для индикатора на 2 картинке?
Я планирую поставить заслонку, которую можно будет открыть руками в случае необходимости.
Можно запускать винду из bootcamp в виртуалке.
Процессор должен быть начиная с Core 2 Duo.
А вот в виртуалке будет работать, только если она поддерживает виртуализацию PMU.
функция использует DSO-идентификатор, который известен только компилятору

Мне стало интересно как генерится этот __dso_handle. Например, если это случайное число, выбранное в момент компиляции, то оно может совпасть у двух библиотек, в таком случае их atexit'ы перепутаются.
Всё оказалось проще и хитрее: __dso_handle — это объект с релокацией, которая подставляется в момент загрузки библиотеки. А так как адреса библиотек в процессе не могут пересекаться, то и хэндлы от разных библиотек всегда будут разные.
OpenMP тоже не поддерживался?
n = int(floor(x + 0.5f));
Зачем здесь floor?

fistp, который, как и в следующем коде, дает гораздо более быстрый
x87 в 2017 году?

Информация

В рейтинге
7 032-й
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность