Skip to content

Data7Viz/addr_bit

Repository files navigation

Инструмент для анализа структуры адресов памяти Linux и Termux.

Обзор.

Утилита предназначена для мгновенной визуализации битовой структуры адреса.
Основной акцент сделан на выравнивание по кеш-линии (64 бита). Программа позволяет визуально 	определить, попадает ли адрес в начало в ("Голову") кеш-линии, что является критически 			важным для производительности.

Цель проэкта.

Показать, что низкоуровневая оптимизация - это искусство контроля памяти. Проект создан в 		рамках глубокого изучения архитектуры ЭВМ и логики битовых операций.

Установка и запуск

Проект не имеет внешних зависимостей и собирается на любой POSIX-системе.

1. Подготовка:

  • Linux: sudo apt update && sudo apt install build-essential git
  • Termux: pkg update && pkg install clang make git

2. Сборка и запуск:

# 1. Клонируем и заходим в папку
git clone https://github.com
cd PROJECT_NAME

# 2. Компилируем и даем права (критично для Termux)
clang main.c -o my_utility || gcc main.c -o my_utility
chmod +x my_utility

# 3. Запускаем
./my_utility

Либо через Makefile:
Если вы используете make, просто введите:
make

Для справки: Содержимое файла Makefile
Если ты хочешь, чтобы команда make работала, создай рядом с main.c файл с именем Makefile и таким текстом:

all:
	clang main.c -o my_utility || gcc main.c -o my_utility
	chmod +x my_utility

Пример анализа.

При вводе 0х40 (64 dec) единица загорается в колонке , соответствующей 7-му биту (если 			считать от 0 6-му). Это визуальное подтверждение начало новой 64-байтной линии.
Напишем две простые программы. В каждой масив на 16 интов, один массв выровненый по кэш-		линии второй случайный. Выведем адреса нулевых элементов. 
61

Техническая логика.

Программа состоит из 3 информационных слоёв плюс слой двоичное представление адреса. Веса разрядов (dec): Зелёная линия вес (DEC) можно определить смещение внутри страницы жёлтый адрес до головы страницы 128 байт. Красный адрес до головы 1916 байт (средина страницы). Розовая линия номер набора с 6 по 11 разряд (номер набора 2 \ 29). Синяя линия номер разряда. 4 линия 5 и так далее это двоичное представление адреса памяти. Сколько адресов введём столько и будет линий. Выровненый массив на 16 интов адрес жёлтого цвета мы видим выровнен по кэш-линии СКОРОСТЬ Случайный массив на 16 интов адрес красного цвета этот массив лежит в хвосте кэш-линии Падение производительности Массив рвётся на две части одна часть в первой линии другая часть массива ложится во вторую кеш-линию. Поход в память за второй линией процессор ждёт заряд разряд конденсаторов, доп разряд акб критично для мобильных устройств и т.д.

Интерфейс для чтения.

Ввод поддерживает десятичные числа и шестнадцатиричный формат. 12 разрядов визуализирует 		младшие разряды адреса. Маркер "Головы" если смещение (offset) равно 0, программа фиксирует 	идеальное выравнивание. Цветной вывод. Можно вводить много адресов. Выход из программы, 		любой символ. Я применяю стандврт (" q "). Есть возможность добавить множество сообщений, 		моё мнение они мешают.

Кроссплатформенность.

Код написан на чистом си и не имеет зависимостей. Среды: Полная поддержка Linux Termux. Архитектура: х86_64, arm. Удобство: Можно писать и использовать утилиту даже лёжа на диване ( используя Termux на планшете ).

About

Разложим адрес памяти на биты.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages