Рубрика «Программирование» - 122

Сегодня я собираюсь поговорить про адресацию памяти: один, казалось бы, небольшой, и тем не менее удивительно непростой элемент семантики команд архитектуры х86_64. В особенности хочется поговорить про команду mov и то, как через только одну эту команду х86_64 пользователю становятся доступны различные методы адресации памяти.

Я не буду говорить про остальные затрагивающие память команды (то есть, благодаря CISC, почти все остальные), команды которые пишут массивные фрагменты памяти (это о тебе, fxsave), или иные касающиеся темы вопросы (модели кода, независящий от адреса код, и бинарная релокация). Я также не буду затрагивать исторические режимы адресации или режимы, которые активны при работе процессора x86_64 не в 64-битном режиме (т.е. любые отличные от long mode с 64-битным кодом).

Некоторые ограничения

Несмотря на кошмарное наследие кодирования команд х86_64, а может и благодаря ему, у адресации памяти есть некоторые ограничения.

Начнем с хорошего:

  • На достаточно высоком уровне в архитектуре х86_64 есть всего два режима адресации.
  • Все регистры в обоих режимах адресации должны быть строго одинакового размера. Другими словами, мы не можем странным образом смешивать 64, 32 и 16-битные регистры и получать актуальный адрес — в кодировании х86_64 для подобного маневра попросту нет места.

Читать полностью »

Мы заинтересованы в том, чтобы повышать образовательный уровень в IT-сфере,  и готовы строить высшее образование вместе с вузом.

В этом посте мы расскажем об образовательных проектах в Петербурге, которые поддерживает JetBrains: о бакалаврских и магистерских программах в НИУ ВШЭ, ИТМО, СПбГУ и о Computer Science Center.

Где учиться программированию в Петербурге: программы при поддержке JetBrains - 1

Читать полностью »

Хотелось бы поделиться своей историей неудачи, если понимать под этим негативный фидбек от компании после ревью технического задания. Конечно же, каждый подобный опыт — это всегда прекрасная возможность пересмотреть стратегию, сделать определенные выводы из своих или чужих ошибок. И в данном случае, у меня есть отличный повод порефлексировать над пережитым опытом интервью, даже несмотря на то, что он не закончился оффером. Хочу заранее выразить свою благодарность за время, которое вы потратите на чтение этой статьи с кодом и усилия, приложенные на их понимание. Хочу выразить двойную благодарность, если при этом читатель поделится своим мнением.
Читать полностью »

Открытые исходники

Недавно в открытый доступ были выложены исходники системы голосования, которая по всей видимости, и будет применяться на электронном голосовании по Конституции в Москве и Нижнем Новгороде.

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

Читать полностью »

«Breakout-YOLO»: знакомимся с шустрой object-detection моделью, играя в классический «Арканоид» - 1

Всем привет! Весенний семестр для некоторых студентов 3-го курса ФУПМ МФТИ ознаменовался сдачей проектов по курсу «Методы оптимизации». Каждый должен был выделить интересную для себя тему (или придумать свою) и воплотить её в жизнь в виде кода, научной статьи, численного эксперимента или даже бота в Telegram.

Жёстких ограничений на выбор темы не было, поэтому можно было дать разгуляться фантазии. You Only Live Once! — воскликнул я, и решил использовать эту возможность, чтобы привнести немного огня в бессмертную классику.Читать полностью »

Umka. Жизнь статической типизации в скриптовом языке - 1

В своё время посты на Хабре и Reddit о статически типизированном скриптовом языке Umka вызвали весьма активную дискуссию.

Прошедшие полтора месяца позволили мне избавиться от некоторых заблуждений, развить язык и дать чуть более вразумительные ответы на вопросы публики. Как и следовало ожидать, наиболее серьёзное испытание выпало на долю самой концепции статической типизации. Она осталась в основе языка, но потребовала компромиссов — в частности, для корректной сборки мусора.

Появились первые замеры быстродействия интерпретатора в сравнении с Wren и Python — их результаты внушают оптимизм. Наконец, родился более реалистичный пример использования Umka по его основному назначению, т. е. как встраиваемого языка.
Читать полностью »

PVS-Studio охраняет сон программиста

Попробовать статический анализатор кода легко. А вот, чтобы внедрить его, особенно в разработку большого старого проекта, потребуется умение. При неправильном подходе анализатор может добавить работы, замедлить разработку и демотивировать команду. Давайте кратко поговорим, как правильно подойти к интеграции статического анализа в процесс разработки и начать его использовать как часть CI/CD.
Читать полностью »

Настраиваем окружение Python с помощью pyenv, virtualenvwrapper, tox и pip-compile - 1

Эти инструменты упростят настройку и позволит автоматизировать рутинные операции. Они избавят разработчика от многих сложностей, которые мешают сосредоточиться на решении задач и комфортном написании кода.

Есть много способов настройки окружения Python. В этом материале об одном из них. Но это, безусловно, не является единственным решением.
Читать полностью »

За последние 3 года я рассмотрел более 1000 pull (merge) request’ов. За это время я многому научился — в основном тому, как не проверять код, как сделать процесс менее болезненным, что делает код хорошего качества и так далее.

Pull request должен делать только одну вещь

Это самая важная вещь, на которую стоит обратить внимание.

Делая code review, вы должны держать в голове много вещей. «Что за этим стоит?», «Как это согласуется с остальной частью кода?» и «Будет ли это хорошо работать?» Вот лишь некоторые из вопросов, на которые нужно ответить. Таким образом, когда у вас есть pull request, который пытается решить одну проблему, на некоторые из этих вопросов легче ответить.

Другим важным аспектом является размер pull request’а. Большие запросы требуют экспоненциально больше времени для рассмотрения. И когда я узнаю, что мне нужно потратить более 15 минут на запрос, вам придется подождать до пары часов.
Читать полностью »

Привет.

Заканчивается первая половина 2020 года, можно подвести некоторые статистические итоги, тем более что по понятным причинам они обещают быть интересными. Появились новые темы для обсуждения, многие стали работать из дома, любопытно посмотреть, как это сказалось на количестве статей и их популярности.

Хабрастатистика: как Хабр пережил самоизоляцию - 1

Для тех, кому интересно, что получилось, продолжение под катом.Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js