#assembler — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #assembler, aggregated by home.social.
-
Забытый мультиколор (часть 1)
Полное руководство по аппаратному мультиколору для тех, кто не знает, что это такое и зачем он нужен.
https://habr.com/ru/articles/1038696/
#zx_spectrum #zx_evolution #timex #multicolor #железо #история_it #демосцена #видеоигры #z80 #assembler
-
Convert Amiga assembler code to C
The programmer Reinier van Vliet and the graphic designer @metin together with another partner, formed the Dutch game development group Team Hoi, writing its games in assembler.
Reinier van Vliet has developed a small toolchain that converts 68000 assembler code into portable C. The aim is to achieve CPU semantics that are sufficiently faithful to the originalto port genuine game logic. -
Деконструкция GO: Низкоуровневые концепции. Atomics. Часть 2.1
Я самую малость обленился и как-то давно не делал новых разборов, поэтому следующим нашим этапом деконструкции будут низкоуровневые операции . Иногда здесь будет в отрыве от аллокаторов/планировщиков и прочего, но опять же, статьи для тех, кто знает и хочет разобраться поглубже, как тут всё устроено. Поэтому, в этой части начнем с самого простого – пакета atomic. Концепции вокруг атомарных операций на уровне CPU я рассматривал здесь , поэтому советую почитать. Там мы даже пишем свой атомарный AND. !Важно! Мы будем разбирать на примере src/internal/runtime/atomics , то есть внутреннего пакета, а не того, который представлен нам как пользователям(потому что в исходниках я не нашел реализации). Но по большей части операции одни и те же.
-
Деконструкция GO: Низкоуровневые концепции. Atomics. Часть 2.1
Я самую малость обленился и как-то давно не делал новых разборов, поэтому следующим нашим этапом деконструкции будут низкоуровневые операции . Иногда здесь будет в отрыве от аллокаторов/планировщиков и прочего, но опять же, статьи для тех, кто знает и хочет разобраться поглубже, как тут всё устроено. Поэтому, в этой части начнем с самого простого – пакета atomic. Концепции вокруг атомарных операций на уровне CPU я рассматривал здесь , поэтому советую почитать. Там мы даже пишем свой атомарный AND. !Важно! Мы будем разбирать на примере src/internal/runtime/atomics , то есть внутреннего пакета, а не того, который представлен нам как пользователям(потому что в исходниках я не нашел реализации). Но по большей части операции одни и те же.
-
Деконструкция GO: Низкоуровневые концепции. Atomics. Часть 2.1
Я самую малость обленился и как-то давно не делал новых разборов, поэтому следующим нашим этапом деконструкции будут низкоуровневые операции . Иногда здесь будет в отрыве от аллокаторов/планировщиков и прочего, но опять же, статьи для тех, кто знает и хочет разобраться поглубже, как тут всё устроено. Поэтому, в этой части начнем с самого простого – пакета atomic. Концепции вокруг атомарных операций на уровне CPU я рассматривал здесь , поэтому советую почитать. Там мы даже пишем свой атомарный AND. !Важно! Мы будем разбирать на примере src/internal/runtime/atomics , то есть внутреннего пакета, а не того, который представлен нам как пользователям(потому что в исходниках я не нашел реализации). Но по большей части операции одни и те же.
-
Деконструкция GO: Низкоуровневые концепции. Atomics. Часть 2.1
Я самую малость обленился и как-то давно не делал новых разборов, поэтому следующим нашим этапом деконструкции будут низкоуровневые операции . Иногда здесь будет в отрыве от аллокаторов/планировщиков и прочего, но опять же, статьи для тех, кто знает и хочет разобраться поглубже, как тут всё устроено. Поэтому, в этой части начнем с самого простого – пакета atomic. Концепции вокруг атомарных операций на уровне CPU я рассматривал здесь , поэтому советую почитать. Там мы даже пишем свой атомарный AND. !Важно! Мы будем разбирать на примере src/internal/runtime/atomics , то есть внутреннего пакета, а не того, который представлен нам как пользователям(потому что в исходниках я не нашел реализации). Но по большей части операции одни и те же.
-
Ghidra-SNES project by JoshLeaves: #Ghidra extension for #SNES #reverseengineering #romhacking (first public release, feedback welcome!) #retrodev #emudev #retrogaming #assembler
Ghidra-SNES: A Ghidra extensio... -
Ghidra-SNES project by JoshLeaves: #Ghidra extension for #SNES #reverseengineering #romhacking (first public release, feedback welcome!) #retrodev #emudev #retrogaming #assembler
Ghidra-SNES: A Ghidra extensio... -
Ghidra-SNES project by JoshLeaves: #Ghidra extension for #SNES #reverseengineering #romhacking (first public release, feedback welcome!) #retrodev #emudev #retrogaming #assembler
Ghidra-SNES: A Ghidra extensio... -
Ghidra-SNES project by JoshLeaves: #Ghidra extension for #SNES #reverseengineering #romhacking (first public release, feedback welcome!) #retrodev #emudev #retrogaming #assembler
Ghidra-SNES: A Ghidra extensio... -
Remoded: разбираем демо-эффекты (часть 1)
Приветствую всех ценителей больших пикселей и выпуклых мониторов. Мы продолжаем разбираться с технологиями демосцены 90-х. В этой статье: недокументированные режимы VGA, аппаратный скролл, fake mode, удивительный алгоритм закраски, и многое другое, о чем бесполезно спрашивать у ChatGPT. BEGIN
https://habr.com/ru/articles/1028782/
#демосцена #олдскул #oldschool #assembler #ассемблер #кодинг #компьютерная_графика
-
Remoded: разбираем демо-эффекты (часть 1)
Приветствую всех ценителей больших пикселей и выпуклых мониторов. Мы продолжаем разбираться с технологиями демосцены 90-х. В этой статье: недокументированные режимы VGA, аппаратный скролл, fake mode, удивительный алгоритм закраски, и многое другое, о чем бесполезно спрашивать у ChatGPT. BEGIN
https://habr.com/ru/articles/1028782/
#демосцена #олдскул #oldschool #assembler #ассемблер #кодинг #компьютерная_графика
-
Remoded: разбираем демо-эффекты (часть 1)
Приветствую всех ценителей больших пикселей и выпуклых мониторов. Мы продолжаем разбираться с технологиями демосцены 90-х. В этой статье: недокументированные режимы VGA, аппаратный скролл, fake mode, удивительный алгоритм закраски, и многое другое, о чем бесполезно спрашивать у ChatGPT. BEGIN
https://habr.com/ru/articles/1028782/
#демосцена #олдскул #oldschool #assembler #ассемблер #кодинг #компьютерная_графика
-
Remoded: разбираем демо-эффекты (часть 1)
Приветствую всех ценителей больших пикселей и выпуклых мониторов. Мы продолжаем разбираться с технологиями демосцены 90-х. В этой статье: недокументированные режимы VGA, аппаратный скролл, fake mode, удивительный алгоритм закраски, и многое другое, о чем бесполезно спрашивать у ChatGPT. BEGIN
https://habr.com/ru/articles/1028782/
#демосцена #олдскул #oldschool #assembler #ассемблер #кодинг #компьютерная_графика
-
Деконструкция GO: CPU, RAM и что там происходит. Syscalls. Часть 1.5
Итак, финал части 1! По крайней мере основного разбора без дополнений. Собственно, сегодня мы разберем то, чем в основном с точки зрения ядра ОС и CPU являются все вот эти ваши бэкенды – системные вызовы и всё, что вокруг них. На самом деле механизм немного замудренный и “в лоб” сразу все эти системные вызовы мы разбирать не будем, потому что вокруг них существует ещё несколько концепций. Итак, начнем! User mode, Kernel mode Процессор исполняет код в разных уровнях привилегий. Это механизм защиты, который не позволяет пользовательским программам напрямую управлять системой. Зачем? Для безопасности. Чтобы чей-нибудь опасный ассемблерный вайбкод случайно всё не поломал! Да и вообще, если бы любая программа могла выполнять любые инструкции CPU, она могла бы: • Читать память других процессов • Управлять устройствами • Изменять таблицы страниц • Выключать систему Чтобы этого не происходило, CPU разделяет код по уровням доступа. Хотя в архитектуре x86 существует 4 уровня привилегий: Ring 0 – kernel mode Ring 1 – драйверы Ring 2 – системные службы и файлы Ring 3 – user mode По факту, Ring 1 и Ring 2 – это легаси, которое американские деды проектировали с научной красотой, но без реальной производственной необходимости. В реальной жизни используются только 2 уровня – Ring 0 и Ring 3 для бОльшей совместимости софта с другими ОС, упрощения поддержки, да и вообще переключение уровней доступа дорогое(100-150 тактов CPU), соответственно, чем больше колец, тем хуже производительность. Получается, что В user mode выполняется обычный код программ.
-
Деконструкция GO: CPU, RAM и что там происходит. Syscalls. Часть 1.5
Итак, финал части 1! По крайней мере основного разбора без дополнений. Собственно, сегодня мы разберем то, чем в основном с точки зрения ядра ОС и CPU являются все вот эти ваши бэкенды – системные вызовы и всё, что вокруг них. На самом деле механизм немного замудренный и “в лоб” сразу все эти системные вызовы мы разбирать не будем, потому что вокруг них существует ещё несколько концепций. Итак, начнем! User mode, Kernel mode Процессор исполняет код в разных уровнях привилегий. Это механизм защиты, который не позволяет пользовательским программам напрямую управлять системой. Зачем? Для безопасности. Чтобы чей-нибудь опасный ассемблерный вайбкод случайно всё не поломал! Да и вообще, если бы любая программа могла выполнять любые инструкции CPU, она могла бы: • Читать память других процессов • Управлять устройствами • Изменять таблицы страниц • Выключать систему Чтобы этого не происходило, CPU разделяет код по уровням доступа. Хотя в архитектуре x86 существует 4 уровня привилегий: Ring 0 – kernel mode Ring 1 – драйверы Ring 2 – системные службы и файлы Ring 3 – user mode По факту, Ring 1 и Ring 2 – это легаси, которое американские деды проектировали с научной красотой, но без реальной производственной необходимости. В реальной жизни используются только 2 уровня – Ring 0 и Ring 3 для бОльшей совместимости софта с другими ОС, упрощения поддержки, да и вообще переключение уровней доступа дорогое(100-150 тактов CPU), соответственно, чем больше колец, тем хуже производительность. Получается, что В user mode выполняется обычный код программ.
-
Деконструкция GO: CPU, RAM и что там происходит. Syscalls. Часть 1.5
Итак, финал части 1! По крайней мере основного разбора без дополнений. Собственно, сегодня мы разберем то, чем в основном с точки зрения ядра ОС и CPU являются все вот эти ваши бэкенды – системные вызовы и всё, что вокруг них. На самом деле механизм немного замудренный и “в лоб” сразу все эти системные вызовы мы разбирать не будем, потому что вокруг них существует ещё несколько концепций. Итак, начнем! User mode, Kernel mode Процессор исполняет код в разных уровнях привилегий. Это механизм защиты, который не позволяет пользовательским программам напрямую управлять системой. Зачем? Для безопасности. Чтобы чей-нибудь опасный ассемблерный вайбкод случайно всё не поломал! Да и вообще, если бы любая программа могла выполнять любые инструкции CPU, она могла бы: • Читать память других процессов • Управлять устройствами • Изменять таблицы страниц • Выключать систему Чтобы этого не происходило, CPU разделяет код по уровням доступа. Хотя в архитектуре x86 существует 4 уровня привилегий: Ring 0 – kernel mode Ring 1 – драйверы Ring 2 – системные службы и файлы Ring 3 – user mode По факту, Ring 1 и Ring 2 – это легаси, которое американские деды проектировали с научной красотой, но без реальной производственной необходимости. В реальной жизни используются только 2 уровня – Ring 0 и Ring 3 для бОльшей совместимости софта с другими ОС, упрощения поддержки, да и вообще переключение уровней доступа дорогое(100-150 тактов CPU), соответственно, чем больше колец, тем хуже производительность. Получается, что В user mode выполняется обычный код программ.
-
Деконструкция GO: CPU, RAM и что там происходит. Syscalls. Часть 1.5
Итак, финал части 1! По крайней мере основного разбора без дополнений. Собственно, сегодня мы разберем то, чем в основном с точки зрения ядра ОС и CPU являются все вот эти ваши бэкенды – системные вызовы и всё, что вокруг них. На самом деле механизм немного замудренный и “в лоб” сразу все эти системные вызовы мы разбирать не будем, потому что вокруг них существует ещё несколько концепций. Итак, начнем! User mode, Kernel mode Процессор исполняет код в разных уровнях привилегий. Это механизм защиты, который не позволяет пользовательским программам напрямую управлять системой. Зачем? Для безопасности. Чтобы чей-нибудь опасный ассемблерный вайбкод случайно всё не поломал! Да и вообще, если бы любая программа могла выполнять любые инструкции CPU, она могла бы: • Читать память других процессов • Управлять устройствами • Изменять таблицы страниц • Выключать систему Чтобы этого не происходило, CPU разделяет код по уровням доступа. Хотя в архитектуре x86 существует 4 уровня привилегий: Ring 0 – kernel mode Ring 1 – драйверы Ring 2 – системные службы и файлы Ring 3 – user mode По факту, Ring 1 и Ring 2 – это легаси, которое американские деды проектировали с научной красотой, но без реальной производственной необходимости. В реальной жизни используются только 2 уровня – Ring 0 и Ring 3 для бОльшей совместимости софта с другими ОС, упрощения поддержки, да и вообще переключение уровней доступа дорогое(100-150 тактов CPU), соответственно, чем больше колец, тем хуже производительность. Получается, что В user mode выполняется обычный код программ.
-
Teil 2 zum AgonLight - Programmieren in 2026 auf einem modernen 8-Bit System in Basic und Assembler. Home Automation in 8-Bit, why not?
https://retrocomputer-dresden.de/agonlight-programmierung/
#agonlight #retrocomputing #dresden #basic #bbcbasic #assembler #esp32
-
Teil 2 zum AgonLight - Programmieren in 2026 auf einem modernen 8-Bit System
https://retrocomputer-dresden.de/agonlight-programmierung/
#agonlight #retrocomputing #dresden #basic #bbcbasic #assembler #esp32
-
Teil 2 zum AgonLight - Programmieren in 2026 auf einem modernen 8-Bit System in Basic und Assembler. Home Automation in 8-Bit, why not?
https://retrocomputer-dresden.de/agonlight-programmierung/
#agonlight #retrocomputing #dresden #basic #bbcbasic #assembler #esp32
-
Деконструкция GO: CPU, RAM и что там происходит. Оптимизации на CPU. Часть 1.4
Первые великие оптимизаторы появились уже на таком низком уровне, как железо. По факту, задача выжимки ресурсов в программировании есть на любом уровне. В этой статье мы разберем оптимизации на уровне CPU такие как NUMA, prefetch, TLB и alignment. Статья получится немного неоднородной и больше про “высокие материи”, что в принципе намекает на то, что разбор “железной” составляющей скоро подойдет к концу! Вводная Как мы рассматривали некогда ранее обращение на RAM – это достаточно дорого. CPU пытается это “скрыть”, чтобы работа казалась куда более быстрой. Одним из таких механизмов, естественно, является иерархия кэшей! Но вот не возникало ли у вас вообще вопроса – “А почему память – это в принципе проблема? Почему дорого?”. Все очень просто – доступ к памяти медленный Тактовая частота например моего ноута – 2,70 ГГц, то есть 2,7 миллиарда циклов/операций в секунду Доступ к ОЗУ имеет задержку аж в 150–350 циклов! То есть за это время мы могли бы выполнить 200 операций. Такое положение дел нас в современных реалиях не устраивает, поэтому прибегаем к различным оптимизациями. Prefetch В предыдущей серии мы рассматривали модель исполнения процессорных инструкций. Когда инструкции поступают, CPU, а точнее его механизм hardware prefetcher, загружает данные в кэш из предположения, что они скоро понадобятся. На всякий случай зафиксируем:
-
Деконструкция GO: CPU, RAM и что там происходит. Оптимизации на CPU. Часть 1.4
Первые великие оптимизаторы появились уже на таком низком уровне, как железо. По факту, задача выжимки ресурсов в программировании есть на любом уровне. В этой статье мы разберем оптимизации на уровне CPU такие как NUMA, prefetch, TLB и alignment. Статья получится немного неоднородной и больше про “высокие материи”, что в принципе намекает на то, что разбор “железной” составляющей скоро подойдет к концу! Вводная Как мы рассматривали некогда ранее обращение на RAM – это достаточно дорого. CPU пытается это “скрыть”, чтобы работа казалась куда более быстрой. Одним из таких механизмов, естественно, является иерархия кэшей! Но вот не возникало ли у вас вообще вопроса – “А почему память – это в принципе проблема? Почему дорого?”. Все очень просто – доступ к памяти медленный Тактовая частота например моего ноута – 2,70 ГГц, то есть 2,7 миллиарда циклов/операций в секунду Доступ к ОЗУ имеет задержку аж в 150–350 циклов! То есть за это время мы могли бы выполнить 200 операций. Такое положение дел нас в современных реалиях не устраивает, поэтому прибегаем к различным оптимизациями. Prefetch В предыдущей серии мы рассматривали модель исполнения процессорных инструкций. Когда инструкции поступают, CPU, а точнее его механизм hardware prefetcher, загружает данные в кэш из предположения, что они скоро понадобятся. На всякий случай зафиксируем:
-
Деконструкция GO: CPU, RAM и что там происходит. Оптимизации на CPU. Часть 1.4
Первые великие оптимизаторы появились уже на таком низком уровне, как железо. По факту, задача выжимки ресурсов в программировании есть на любом уровне. В этой статье мы разберем оптимизации на уровне CPU такие как NUMA, prefetch, TLB и alignment. Статья получится немного неоднородной и больше про “высокие материи”, что в принципе намекает на то, что разбор “железной” составляющей скоро подойдет к концу! Вводная Как мы рассматривали некогда ранее обращение на RAM – это достаточно дорого. CPU пытается это “скрыть”, чтобы работа казалась куда более быстрой. Одним из таких механизмов, естественно, является иерархия кэшей! Но вот не возникало ли у вас вообще вопроса – “А почему память – это в принципе проблема? Почему дорого?”. Все очень просто – доступ к памяти медленный Тактовая частота например моего ноута – 2,70 ГГц, то есть 2,7 миллиарда циклов/операций в секунду Доступ к ОЗУ имеет задержку аж в 150–350 циклов! То есть за это время мы могли бы выполнить 200 операций. Такое положение дел нас в современных реалиях не устраивает, поэтому прибегаем к различным оптимизациями. Prefetch В предыдущей серии мы рассматривали модель исполнения процессорных инструкций. Когда инструкции поступают, CPU, а точнее его механизм hardware prefetcher, загружает данные в кэш из предположения, что они скоро понадобятся. На всякий случай зафиксируем:
-
Деконструкция GO: CPU, RAM и что там происходит. Оптимизации на CPU. Часть 1.4
Первые великие оптимизаторы появились уже на таком низком уровне, как железо. По факту, задача выжимки ресурсов в программировании есть на любом уровне. В этой статье мы разберем оптимизации на уровне CPU такие как NUMA, prefetch, TLB и alignment. Статья получится немного неоднородной и больше про “высокие материи”, что в принципе намекает на то, что разбор “железной” составляющей скоро подойдет к концу! Вводная Как мы рассматривали некогда ранее обращение на RAM – это достаточно дорого. CPU пытается это “скрыть”, чтобы работа казалась куда более быстрой. Одним из таких механизмов, естественно, является иерархия кэшей! Но вот не возникало ли у вас вообще вопроса – “А почему память – это в принципе проблема? Почему дорого?”. Все очень просто – доступ к памяти медленный Тактовая частота например моего ноута – 2,70 ГГц, то есть 2,7 миллиарда циклов/операций в секунду Доступ к ОЗУ имеет задержку аж в 150–350 циклов! То есть за это время мы могли бы выполнить 200 операций. Такое положение дел нас в современных реалиях не устраивает, поэтому прибегаем к различным оптимизациями. Prefetch В предыдущей серии мы рассматривали модель исполнения процессорных инструкций. Когда инструкции поступают, CPU, а точнее его механизм hardware prefetcher, загружает данные в кэш из предположения, что они скоро понадобятся. На всякий случай зафиксируем:
-
Cross-compiler/assembler: Calypsi 5.16 for Windows, Linux and Mac OS
Calypsi is a collection of compilers and assemblers for Windows, Linux and Mac OS, that generatescode for various retro computers. New in version 5.16:
https://www.amiga-news.de/en/news/AN-2026-04-00071-EN.html
#compiler #assembler #Windows #Linux #macOS #calypsi #opensource #MOS6502 #WDC65816 #Motorola68000 #HPNut
-
Cross-compiler/assembler: Calypsi 5.16 for Windows, Linux and Mac OS
Calypsi is a collection of compilers and assemblers for Windows, Linux and Mac OS, that generatescode for various retro computers. New in version 5.16:
https://www.amiga-news.de/en/news/AN-2026-04-00071-EN.html
#compiler #assembler #Windows #Linux #macOS #calypsi #opensource #MOS6502 #WDC65816 #Motorola68000 #HPNut
-
Cross-compiler/assembler: Calypsi 5.16 for Windows, Linux and Mac OS
Calypsi is a collection of compilers and assemblers for Windows, Linux and Mac OS, that generatescode for various retro computers. New in version 5.16:
https://www.amiga-news.de/en/news/AN-2026-04-00071-EN.html
#compiler #assembler #Windows #Linux #macOS #calypsi #opensource #MOS6502 #WDC65816 #Motorola68000 #HPNut
-
Cross-compiler/assembler: Calypsi 5.16 for Windows, Linux and Mac OS
Calypsi is a collection of compilers and assemblers for Windows, Linux and Mac OS, that generatescode for various retro computers. New in version 5.16:
https://www.amiga-news.de/en/news/AN-2026-04-00071-EN.html
#compiler #assembler #Windows #Linux #macOS #calypsi #opensource #MOS6502 #WDC65816 #Motorola68000 #HPNut
-
Cross-compiler/assembler: Calypsi 5.16 for Windows, Linux and Mac OS
Calypsi is a collection of compilers and assemblers for Windows, Linux and Mac OS, that generatescode for various retro computers. New in version 5.16:
https://www.amiga-news.de/en/news/AN-2026-04-00071-EN.html
#compiler #assembler #Windows #Linux #macOS #calypsi #opensource #MOS6502 #WDC65816 #Motorola68000 #HPNut
-
m68k assembler support: m68kplugin 0.2.2 for JetBrains
In addition to Chris 'platon42' Hodges' MC68000 Assembly Language Plugin for Jetbrains' integrated development environments, Yann Cébron also provides one. Now version 0.2.2 has been released:
-
m68k assembler support: m68kplugin 0.2.2 for JetBrains
In addition to Chris 'platon42' Hodges' MC68000 Assembly Language Plugin for Jetbrains' integrated development environments, Yann Cébron also provides one. Now version 0.2.2 has been released:
-
m68k assembler support: m68kplugin 0.2.2 for JetBrains
In addition to Chris 'platon42' Hodges' MC68000 Assembly Language Plugin for Jetbrains' integrated development environments, Yann Cébron also provides one. Now version 0.2.2 has been released:
-
m68k assembler support: m68kplugin 0.2.2 for JetBrains
In addition to Chris 'platon42' Hodges' MC68000 Assembly Language Plugin for Jetbrains' integrated development environments, Yann Cébron also provides one. Now version 0.2.2 has been released:
-
m68k assembler support: m68kplugin 0.2.2 for JetBrains
In addition to Chris 'platon42' Hodges' MC68000 Assembly Language Plugin for Jetbrains' integrated development environments, Yann Cébron also provides one. Now version 0.2.2 has been released:
-
Деконструкция GO: CPU, RAM и что там происходит. Многозадачность, многопоточность, кэши, проблемы. Часть 1.2
В прошлой статье я немного слукавил, сказав, что мы будем разбирать атомики, барьеры и системные вызовы. Я пару дней поразмышлял и осознал – а зачем вообще это объяснять, если мы даже не знаем про причину их возникновения и проблемы, которые они решают В части 1.1 мы рассмотрели базовые инструкции, которые выполняет наш CPU и которыми в конечном счете и являются наши прекрасные строчки на Go. Но возникает закономерный вопрос: “Окей, мы поняли как работает на одном ядре, но Go у нас во многом про многопоточку, соответственно как это будет работать на нескольких потоках?” Если что, то это часть большого цикла по разбору Go! Данная статья – это подводка уже к тому, с чем мы имеем дело в Go достаточно часто(барьеры памяти, атомики, сисколы) В этот раз будет без Go Assembler, но с +- реальными примерами, если что-то непонятно будет, то на Хабре есть классный ИИ-помощник Многозадачность Хоть мы и развенчиваем в этом цикле абстракции, придется немного к ним вернуться. Но ненадолго! Вспоминаем, как у нас выполняются инструкции в процессоре и представляем следующую конфигурацию: Есть какое-то количество ГБ RAM Есть 1 ядро CPU Соответственно в один момент CPU может выполнять ровно 1 набор инструкций Но почему-то всё во времена одноядерных CPU работало непрерывно… На самом деле нет! Работало еще как с прерываниями(не путать с теми, которые interrupt), просто настолько быстро, что мы были неспособны это осознать, а для того, чтобы успевали работать фоновые службы, приложения и что бы то ни было ещё как раз и придумали многозадачность !
https://habr.com/ru/articles/1024868/
#assembler #go #multithreading #multitasking #race_condition #cache_contention #cpu #ram #linux
-
Деконструкция GO: CPU, RAM и что там происходит. Многозадачность, многопоточность, кэши, проблемы. Часть 1.2
В прошлой статье я немного слукавил, сказав, что мы будем разбирать атомики, барьеры и системные вызовы. Я пару дней поразмышлял и осознал – а зачем вообще это объяснять, если мы даже не знаем про причину их возникновения и проблемы, которые они решают В части 1.1 мы рассмотрели базовые инструкции, которые выполняет наш CPU и которыми в конечном счете и являются наши прекрасные строчки на Go. Но возникает закономерный вопрос: “Окей, мы поняли как работает на одном ядре, но Go у нас во многом про многопоточку, соответственно как это будет работать на нескольких потоках?” Если что, то это часть большого цикла по разбору Go! Данная статья – это подводка уже к тому, с чем мы имеем дело в Go достаточно часто(барьеры памяти, атомики, сисколы) В этот раз будет без Go Assembler, но с +- реальными примерами, если что-то непонятно будет, то на Хабре есть классный ИИ-помощник Многозадачность Хоть мы и развенчиваем в этом цикле абстракции, придется немного к ним вернуться. Но ненадолго! Вспоминаем, как у нас выполняются инструкции в процессоре и представляем следующую конфигурацию: Есть какое-то количество ГБ RAM Есть 1 ядро CPU Соответственно в один момент CPU может выполнять ровно 1 набор инструкций Но почему-то всё во времена одноядерных CPU работало непрерывно… На самом деле нет! Работало еще как с прерываниями(не путать с теми, которые interrupt), просто настолько быстро, что мы были неспособны это осознать, а для того, чтобы успевали работать фоновые службы, приложения и что бы то ни было ещё как раз и придумали многозадачность !
https://habr.com/ru/articles/1024868/
#assembler #go #multithreading #multitasking #race_condition #cache_contention #cpu #ram #linux
-
Деконструкция GO: CPU, RAM и что там происходит. Многозадачность, многопоточность, кэши, проблемы. Часть 1.2
В прошлой статье я немного слукавил, сказав, что мы будем разбирать атомики, барьеры и системные вызовы. Я пару дней поразмышлял и осознал – а зачем вообще это объяснять, если мы даже не знаем про причину их возникновения и проблемы, которые они решают В части 1.1 мы рассмотрели базовые инструкции, которые выполняет наш CPU и которыми в конечном счете и являются наши прекрасные строчки на Go. Но возникает закономерный вопрос: “Окей, мы поняли как работает на одном ядре, но Go у нас во многом про многопоточку, соответственно как это будет работать на нескольких потоках?” Если что, то это часть большого цикла по разбору Go! Данная статья – это подводка уже к тому, с чем мы имеем дело в Go достаточно часто(барьеры памяти, атомики, сисколы) В этот раз будет без Go Assembler, но с +- реальными примерами, если что-то непонятно будет, то на Хабре есть классный ИИ-помощник Многозадачность Хоть мы и развенчиваем в этом цикле абстракции, придется немного к ним вернуться. Но ненадолго! Вспоминаем, как у нас выполняются инструкции в процессоре и представляем следующую конфигурацию: Есть какое-то количество ГБ RAM Есть 1 ядро CPU Соответственно в один момент CPU может выполнять ровно 1 набор инструкций Но почему-то всё во времена одноядерных CPU работало непрерывно… На самом деле нет! Работало еще как с прерываниями(не путать с теми, которые interrupt), просто настолько быстро, что мы были неспособны это осознать, а для того, чтобы успевали работать фоновые службы, приложения и что бы то ни было ещё как раз и придумали многозадачность !
https://habr.com/ru/articles/1024868/
#assembler #go #multithreading #multitasking #race_condition #cache_contention #cpu #ram #linux
-
Деконструкция GO: CPU, RAM и что там происходит. Многозадачность, многопоточность, кэши, проблемы. Часть 1.2
В прошлой статье я немного слукавил, сказав, что мы будем разбирать атомики, барьеры и системные вызовы. Я пару дней поразмышлял и осознал – а зачем вообще это объяснять, если мы даже не знаем про причину их возникновения и проблемы, которые они решают В части 1.1 мы рассмотрели базовые инструкции, которые выполняет наш CPU и которыми в конечном счете и являются наши прекрасные строчки на Go. Но возникает закономерный вопрос: “Окей, мы поняли как работает на одном ядре, но Go у нас во многом про многопоточку, соответственно как это будет работать на нескольких потоках?” Если что, то это часть большого цикла по разбору Go! Данная статья – это подводка уже к тому, с чем мы имеем дело в Go достаточно часто(барьеры памяти, атомики, сисколы) В этот раз будет без Go Assembler, но с +- реальными примерами, если что-то непонятно будет, то на Хабре есть классный ИИ-помощник Многозадачность Хоть мы и развенчиваем в этом цикле абстракции, придется немного к ним вернуться. Но ненадолго! Вспоминаем, как у нас выполняются инструкции в процессоре и представляем следующую конфигурацию: Есть какое-то количество ГБ RAM Есть 1 ядро CPU Соответственно в один момент CPU может выполнять ровно 1 набор инструкций Но почему-то всё во времена одноядерных CPU работало непрерывно… На самом деле нет! Работало еще как с прерываниями(не путать с теми, которые interrupt), просто настолько быстро, что мы были неспособны это осознать, а для того, чтобы успевали работать фоновые службы, приложения и что бы то ни было ещё как раз и придумали многозадачность !
https://habr.com/ru/articles/1024868/
#assembler #go #multithreading #multitasking #race_condition #cache_contention #cpu #ram #linux
-
Деконструкция Go: модель памяти, happens-before и почему ваш код работает
Приветствую всех! У меня было обилие мыслей на тему того, что можно сюда написать и решил разобраться в фундаменте мироустройства языков программирования. Копнуть в самую суть с разбором когда американских дедов(и их же репозиториев), которые вполне себе могли написать нечто и под знаменитым кукурузным XXX самогоном. Решил я фундаментально разобрать то, как работает Golang, потому что в интернете(YT, Конфы и пр.), на мой взгляд, крайне много откровенно поверхностной и верхнеуровневой информации. Я, конечно, буду рад, если вы укорите меня в моих слабых навыках поиска и покажете мне, что реальность не такая, какой я её выдумал, но субъективно это так. Разборы здесь будут скорее про то, что лежит в порождении сумрачного американского гения по ссылке github.com/golang/go с периодической синхронизацией с официальной документацией. Моя главная цель – разобрать всё максимально исчерпывающе, насколько я это смогу. Чтож, поехали! Ах, да. В этом цикле не будет особо веселых рисуночков с гоферами, а скучные блок-схемы, диаграммы и вырезки из кода. Структурная схема
https://habr.com/ru/articles/1023762/
#go #языки_программирования #memory #память #процессор #атомарность #assembler
-
Деконструкция Go: модель памяти, happens-before и почему ваш код работает
Приветствую всех! У меня было обилие мыслей на тему того, что можно сюда написать и решил разобраться в фундаменте мироустройства языков программирования. Копнуть в самую суть с разбором когда американских дедов(и их же репозиториев), которые вполне себе могли написать нечто и под знаменитым кукурузным XXX самогоном. Решил я фундаментально разобрать то, как работает Golang, потому что в интернете(YT, Конфы и пр.), на мой взгляд, крайне много откровенно поверхностной и верхнеуровневой информации. Я, конечно, буду рад, если вы укорите меня в моих слабых навыках поиска и покажете мне, что реальность не такая, какой я её выдумал, но субъективно это так. Разборы здесь будут скорее про то, что лежит в порождении сумрачного американского гения по ссылке github.com/golang/go с периодической синхронизацией с официальной документацией. Моя главная цель – разобрать всё максимально исчерпывающе, насколько я это смогу. Чтож, поехали! Ах, да. В этом цикле не будет особо веселых рисуночков с гоферами, а скучные блок-схемы, диаграммы и вырезки из кода. Структурная схема
https://habr.com/ru/articles/1023762/
#go #языки_программирования #memory #память #процессор #атомарность #assembler
-
Деконструкция Go: модель памяти, happens-before и почему ваш код работает
Приветствую всех! У меня было обилие мыслей на тему того, что можно сюда написать и решил разобраться в фундаменте мироустройства языков программирования. Копнуть в самую суть с разбором когда американских дедов(и их же репозиториев), которые вполне себе могли написать нечто и под знаменитым кукурузным XXX самогоном. Решил я фундаментально разобрать то, как работает Golang, потому что в интернете(YT, Конфы и пр.), на мой взгляд, крайне много откровенно поверхностной и верхнеуровневой информации. Я, конечно, буду рад, если вы укорите меня в моих слабых навыках поиска и покажете мне, что реальность не такая, какой я её выдумал, но субъективно это так. Разборы здесь будут скорее про то, что лежит в порождении сумрачного американского гения по ссылке github.com/golang/go с периодической синхронизацией с официальной документацией. Моя главная цель – разобрать всё максимально исчерпывающе, насколько я это смогу. Чтож, поехали! Ах, да. В этом цикле не будет особо веселых рисуночков с гоферами, а скучные блок-схемы, диаграммы и вырезки из кода. Структурная схема
https://habr.com/ru/articles/1023762/
#go #языки_программирования #memory #память #процессор #атомарность #assembler
-
Деконструкция Go: модель памяти, happens-before и почему ваш код работает
Приветствую всех! У меня было обилие мыслей на тему того, что можно сюда написать и решил разобраться в фундаменте мироустройства языков программирования. Копнуть в самую суть с разбором когда американских дедов(и их же репозиториев), которые вполне себе могли написать нечто и под знаменитым кукурузным XXX самогоном. Решил я фундаментально разобрать то, как работает Golang, потому что в интернете(YT, Конфы и пр.), на мой взгляд, крайне много откровенно поверхностной и верхнеуровневой информации. Я, конечно, буду рад, если вы укорите меня в моих слабых навыках поиска и покажете мне, что реальность не такая, какой я её выдумал, но субъективно это так. Разборы здесь будут скорее про то, что лежит в порождении сумрачного американского гения по ссылке github.com/golang/go с периодической синхронизацией с официальной документацией. Моя главная цель – разобрать всё максимально исчерпывающе, насколько я это смогу. Чтож, поехали! Ах, да. В этом цикле не будет особо веселых рисуночков с гоферами, а скучные блок-схемы, диаграммы и вырезки из кода. Структурная схема
https://habr.com/ru/articles/1023762/
#go #языки_программирования #memory #память #процессор #атомарность #assembler
-
New version of Skoolkit, a suite of tools that can be used to create a disassembly of a Spectrum game (or any other piece of software), in HTML form or as plain assembly language, from a single set of source files:
-
New version of Skoolkit, a suite of tools that can be used to create a disassembly of a Spectrum game (or any other piece of software), in HTML form or as plain assembly language, from a single set of source files:
-
New version of Skoolkit, a suite of tools that can be used to create a disassembly of a Spectrum game (or any other piece of software), in HTML form or as plain assembly language, from a single set of source files:
-
New version of Skoolkit, a suite of tools that can be used to create a disassembly of a Spectrum game (or any other piece of software), in HTML form or as plain assembly language, from a single set of source files:
-
New version of Skoolkit, a suite of tools that can be used to create a disassembly of a Spectrum game (or any other piece of software), in HTML form or as plain assembly language, from a single set of source files: