#HEX • IT – Telegram
#HEX • IT
372 subscribers
502 photos
104 videos
64 files
478 links
Channel by @alexeev_dev.

Авторский блог.

IT, статьи и другая информация.
Download Telegram
Компилятор Go генерирует абстрактный, портируемый ассемблер, который не привязан к конкретному оборудованию. Следовательно, сборщик Go использует этот псевдоассемблер для создания инструкций, специфичных для целевого оборудования.

Go позволяет использовать ассемблерные вставки в коде. Написание функций на ассемблере прямо в Go не так уж сложно, как кажется. В качестве примера, рассмотрим функцию sum, которая складывает два int64:

func sum(a int64, b int64) int64

Хотя это стандартная функция, в ней отсутствует тело. Поэтому компилятор выдаст ошибку при попытке сборки программы.

Для реализации функции на ассемблере добавим файл с расширением .s:

text sum(sb),$0-24
movq a+0(fp), ax
addq b+8(fp), ax
movq ax, ret+16(fp)
ret

Теперь мы можем собрать, протестировать и использовать функцию sum как обычную. Этот подход широко применяется в различных пакетах, таких как runtime, math, bytealg, syscall, reflect, crypto, позволяя использовать аппаратные оптимизации процессора и команды, отсутствующие в самом языке. Во многом благодаря этому можно создать полноценное ядро операционной системы.

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

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

Встраиваемые функции представляют собой элегантное решение, предоставляющее доступ к низкоуровневым операциям без необходимости расширения спецификации языка. В случае отсутствия специфических примитивов sync/atomic (например, в некоторых вариантах arm), или операций из math/bits, компилятор будет вставлять полифил на обычном Go.
5🔥32👍1
Я решил плотно заняться этим каналом. Будет больше контента (качественного).

Пока у меня есть идея по созданию собственного сайта нашего канала! Как вам идея?

👍 - Это будет очень интересно!
👎 - Неа, сайт пока не надо.
1👍105🔥1
У нас обновилась реакция.

Чтобы получить больше реакций, или вернуть старую, вы можете бустануть канал.
7😢2
Небольшое зрительное упражнение. Засекайте 3 минуты и пытайтесь найти одинаковые фигуры.

Среди других упражнений можно выделить:

1. Быстро моргайте глазами и посмотрите вдаль
2. Плотно закройте глаза, откройте, посмотрите до упора глазами налево, направо, вверх, вперед. Так три раза. Потом начинаете крутить глаза (три оборота).

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

#здоровье
🔥31
👨‍💻 Конструктор Pantasy Retro

Перенеситесь благодаря конструктору Pantasy Retro «Ретро-компьютер» (85005) в недалекое прошлое, когда интернет был в диковинку, а планшетов и вовсе не существовало. Из 1634 деталей набора вы сможет собрать полную комплектацию компьютерного рабочего места, включая системный блок, монитор старого образца на базе электронно-лучевой трубки, мышь, коврик для мыши, клавиатуру, диск и даже дискету! Почувствуйте себя IT-инженером, который конфигурирует компьютер, устанавливая материнскую плату, графическую карту, вентилятор охлаждения процессора, блок питания, дисковод. Насладитесь ностальгическими воспоминаниями, поставив на мониторе заставку с игрой «Сапер».

Цена: ~13.000 рублей

Выглядит очень интересно, я бы купил, если были бы лишние деньги.

https://ya.cc/m/KxjnQaa?erid=5jtCeReNx12oajqt5y64b68

Реклама. ООО «ЯНДЕКС», ИНН 7736207543, erid: 5jtCeReNx12oajqt5y64b68
👍211
Простая до худой
😁6🤣22
Open3D SLAM: A Flexible Pointcloud-based SLAM System for Education - Open3D SLAM: Гибкая образовательная система SLAM на базе Pointcloud

Основное различие между open3d_slam и другими библиотеками SLAM заключается в том, что open3d_slam был разработан таким образом, чтобы быть простым и использоваться в образовательных целях. На самом деле, open3d_slam использует только хорошо зарекомендовавшие себя алгоритмы в их базовой форме. Open3D SLAM гарантирует, что это облегчит работу новичкам. Это работает с pointclouds, не требуется никаких дополнительных данных, таких как IMU. Open3D_slam может создавать карту с нуля или локализовать на заданной карте. Данная карта также может быть дополнена новыми измерениями.

Open3D SLAM основывается на Open3D, хорошо поддерживаемой и высокопроизводительной библиотеке для обработки 3D-данных.

Документация: https://open3d-slam.readthedocs.io/en/latest/

GitHub: https://github.com/leggedrobotics/open3d_slam
👍1🔥11
В 60-е годы советский физик Валентин Турчин создал Рефал — язык программирования, ориентированный на обработку символов и разработку ИИ.
Вместо последовательных инструкций, он использует правила для преобразования выражений. Рефал-функции сопоставляют образцы с выражениями, делая код компактным и понятным.


Представьте, что у нас есть «рефал-функция» с одним правилом:

Образец: add(X, Y)
Шаблон:
X + Y
Если мы подадим на вход этой функции
add(2, 3), то:
1. Образец
add(X, Y) совпадает с выражением add(2, 3).
2. Переменной
X присваивается значение 2, а Y — значение 3.
3. В шаблоне
X + Y происходит замена переменных, и получается 2 + 3.
4. В «поле зрения» Рефал-автомата вместо
add(2, 3) появляется 2 + 3.

И если быть точнее, язык был создан в 1966–1968 годах.
🔥11
Поделить нельзя — умножить, или Алгоритм быстрого деления по методу Ньютона-Рафсона

Все мы в школе проходили деление «столбиком» — простой алгоритм, который несложно реализовать, вот только не очень быстрый. В прошлый раз мы рассматривали, как компилятор оптимизирует деление в случаях, когда делитель известен во время компиляции, но применение его напрямую, чтоб оптимизировать деление для делителей, определяемых в run-time, невозможно: вычисление констант сдвига и умножения само по себе требует деления.

В этот раз поговорим о другом методе, сводящем деление к умножениям и битовым сдвигам, основанном на методе поиска корней функции
🔥31
Нашёл интересную статью, может кому то да и будет интересно.

Ассемблер для программистов на языках высокого уровня: Hello World

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

Статья про создание своей C++ библиотеки с документаций и CMake готова!

Ждите публикацию!

А пока можете поставить звезды на GitHub репозиторий продукта статьи: https://github.com/alxvdev/libnumerixpp
🔥11
😁2🤣1
Дисковая и файловая подсистемы

Диски в Linux: LVMRAID - Программный RAID-массив средствами LVM (Logical Volume Management)
Диски в Linux: Перенос каталога /home на отдельный раздел/том LVM
Диски в Linux: Основы LVM - Logical Volume Management, Менеджер логических томов
Файловые системы в Linux: Квотирование в XFS
Хранение файлов в Linux: Индексные дескрипторы (inodes)
Хранение файлов в Linux: Жесткие ссылки (hard links)
Резервное сохранение в Linux: Использование утилит копирования
Резервное сохранение в Linux: Возможности жестких ссылок
2👍1