<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Форум 'Низкоуровневое программирование' на RSDN</title>
    <link>http://rsdn.org/Forum/asm/</link>
    <description>Ассемблер, драйверы, программирование железа и т.п.</description>
    <category>asm</category>
    <language>ru-ru</language>
    <copyright>Copyright ©, RSDN, 2001-2007</copyright>
    <webMaster>forum@rsdn.org</webMaster>
    <generator>RSDN RSS Generator 1.3</generator>
    <image>
      <url>http://rsdn.org/rsdn.gif</url>
      <title>RSDN</title>
      <link>http://rsdn.org</link>
    </image>
    <lastBuildDate>Wed, 15 Apr 2026 17:51:30 GMT</lastBuildDate>
    <ttl>5</ttl>
	<item>
		<title>Брейкпоины в Гидре. Как?</title>
		<link>http://rsdn.org/Forum/asm/9033161.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/asm/9033161</guid>
		<comments>http://rsdn.org/Forum/asm/9033161</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=9033161</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/9033161</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=9033161</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;(Не знаю, в какую тему писать, наверное Низкоуровневое программирование самое близкое). Изучаю обратную разработку. Использую Гидру. В ней разобрался. А вот дебаггер в Гидре &amp;mdash; это, как говорил Борат, боль в моя дырка задница. Для дебага я использую WinDbg. Изучаемый процесс запускается, и делает свою работу. Но я не понимаю, как в Гидре ставить брейпоинты? Простое действие, но три для нахожусь во фрустрации от непонимания, что делать и куда копать.&lt;/div&gt;
				
		</description>
		
		<category>asm</category>
		<pubDate>Tue, 16 Dec 2025 16:50:19 GMT</pubDate>
		
			<author>Aniskin &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>21</slash:comments>
		
	</item>

	<item>
		<title>Гость Hyper-V на разделе физического диска</title>
		<link>http://rsdn.org/Forum/asm/9001175.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/asm/9001175</guid>
		<comments>http://rsdn.org/Forum/asm/9001175</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=9001175</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/9001175</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=9001175</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;1)&lt;br /&gt;
VMWare может передать гостю виртуалки в качестве диска физическое устройство целиком, например отдельный SSD, а ещё он позволяет так же передавать отдельные разделы. Таким образом, на SSD можно держать несколько разделов и в каждом из них будет своя виртуалка. А Hyper-V позволяет только отдать весь диск целиком и распределить несколько виртуалок внутри одного SSD не получится (я не пишу здесь о хранении дисков в файлах, потому что см. п.2).&lt;br /&gt;
&lt;br /&gt;
Кто-нибудь знает, есть ли вообще возможность писать свои расширения и "драйверы" для Hyper-V? Как раз для того, чтобы дать ей возможность использовать отдельные разделы, а не всё физическое устройство. Как такое сделать?&lt;br /&gt;
&lt;br /&gt;
2)&lt;br /&gt;
Для чего это нужно: как известно, виртуалки тормозят. Особо замечательно они тормозят на дисковых операциях, когда дисковые устройства гостей виртуалки размещены внутри файлов (вроде VHDX) на системе ОС-хоста. Файловая система хоста тормозит, откуда-то берётся двойное кэширование, чтобы на хосте, и на госте оперативка была загажена дисковым кэшем. Основных клиентов систем виртуализации это всё не еб... не волнует, потому что это всякие хостеры со всякими особыми железками, где всё особенное и за мильон денег.&lt;/div&gt;
				
		</description>
		
		<category>asm</category>
		<pubDate>Sun, 05 Oct 2025 02:11:56 GMT</pubDate>
		
			<author>Слава &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>5</slash:comments>
		
	</item>

	<item>
		<title>SoftICE - замена?</title>
		<link>http://rsdn.org/Forum/asm/8999354.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/asm/8999354</guid>
		<comments>http://rsdn.org/Forum/asm/8999354</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=8999354</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/8999354</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=8999354</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Эх, &lt;br /&gt;
когда то юзал этот дебагер.&lt;br /&gt;
Не скажу зачем &lt;img border='0' width='15' height='20' src='//rsdn.org/Forum/images/shuffle.gif' /&gt;&lt;br /&gt;
Потом дорога пошла в другом направлении и забыл.&lt;br /&gt;
Но было весело.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class='q'&gt;&lt;p&gt;Разработана для управления процессами на низком уровне Windows, причём таким образом, чтобы операционная система не распознавала работу отладчика. В отличие от прикладного отладчика, SoftICE способен приостановить все операции в Windows, что очень важно для отладки драйверов.&lt;/p&gt;&lt;/blockquote&gt;
&lt;br /&gt;
Сейчас с учетом объёма кода и кучи интерпретируемого кода, &lt;br /&gt;
уже сомнительна его полезность.&lt;br /&gt;
&lt;br /&gt;
Но просто для само развития:&lt;br /&gt;
&lt;br /&gt;
Есть современные аналоги? &lt;br /&gt;
И да, в мире linux есть современные аналоги?&lt;/div&gt;
				
		</description>
		
		<category>asm</category>
		<pubDate>Tue, 30 Sep 2025 21:31:21 GMT</pubDate>
		
			<author>yoyozhik &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>61</slash:comments>
		
	</item>

	<item>
		<title>А какой сейчас последний видеостандарт?</title>
		<link>http://rsdn.org/Forum/asm/8890170.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/asm/8890170</guid>
		<comments>http://rsdn.org/Forum/asm/8890170</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=8890170</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/8890170</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=8890170</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Мне вот интересно. Предположим я решил тупо с нуля написать свою ОС.&lt;br /&gt;
&lt;br /&gt;
При этом хочу на максимальном количестве совместимого СОВРЕМЕННОГО оборудования тупо при загрузке выставить максимально возможное разрешение, максимальную глубину цвета, и тупо нарисовать красивый Hello world рассматривая видеоадаптер (наверное даже несколько видеоадаптеров, ибо сейчас есть и интегрированное видел), и оперировать со всем тупо записывая в экранную область памяти.&lt;br /&gt;
&lt;br /&gt;
Какой стандарт наиболее актуальный? Неужто блин VESA BIOS Extensions? В котором даже Full HD ни фига нет и который заточен под 4 на 3 размер экрана?&lt;br /&gt;
&lt;br /&gt;
У меня такое впечатление что сейчас блин нормального стандарта то и нет! Либо жуткое легаси 30 летней давности, либо пиши драйвер под какую ОС реализующий API OpenGL DirectX или Vulkan.&lt;/div&gt;
				
		</description>
		
		<category>asm</category>
		<pubDate>Wed, 29 Jan 2025 22:14:11 GMT</pubDate>
		
			<author>elmal &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>19</slash:comments>
		
	</item>

	<item>
		<title>Как надежно различать два одинаковых USB-устройства в Window</title>
		<link>http://rsdn.org/Forum/asm/8879397.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/asm/8879397</guid>
		<comments>http://rsdn.org/Forum/asm/8879397</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=8879397</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/8879397</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=8879397</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Как известно, два одинаковых USB-устройства, не имеющих внутренних состояний, которые можно было бы использовать в качестве идентификаторов, из любой системы выглядят одинаково, и система не имеет возможности определить, какое из устройств куда подключено. Для адресации таких устройств обычно генерируются внутренние уникальные идентификаторы на основе физического адреса (контроллер/хаб/порт).&lt;br /&gt;
&lt;br /&gt;
У меня сейчас нет задачи различать именно сами устройства &amp;mdash; достаточно было бы адресовать их по подключению. Я наивно полагал, что свойство Location information (SPDRP_LOCATION_INFORMATION) как раз и является уникальным и &lt;i&gt;постоянным&lt;/i&gt; идентификатором устройства. У меня на ноутбуке один внутренний хаб, и для всех устройств всегда Hub_#0001.&lt;br /&gt;
&lt;br /&gt;
Но отправил программу пользователю, а у него между перезагрузками Location Information меняется: Port_#0001.Hub_#0003, Port_#0001.Hub_#0007, Port_#0001.Hub_#0004, Port_#0001.Hub_#0005. Судя по всему, у контроллера несколько хабов, и они определяются в случайном порядке.&lt;br /&gt;
&lt;br /&gt;
Какие из доступных свойств устройства можно надежно и предсказуемо (чтоб не менялись между перезагрузками) использовать для адресации?&lt;br /&gt;
&lt;br /&gt;
P.S. Уточню: требуется не способ адресации заранее неизвестного устройства в заранее неизвестной системе, а &lt;i&gt;постоянный&lt;/i&gt; адрес уже известного устройства. То есть, в первый раз устройство будет найдено любым из доступных в системе способов (по имени или другим свойствам), а уже затем нужно определить его "физический адрес", чтобы при следующем запуске (в том числе после выключения/перезагрузки) уверенно и предсказуемо найти его уже по адресу &amp;mdash; разумеется, при условии, что оно подключено к тому же самому разъему.&lt;/div&gt;
				
		</description>
		
		<category>asm</category>
		<pubDate>Wed, 08 Jan 2025 18:55:21 GMT</pubDate>
		
			<author>Евгений Музыченко &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>21</slash:comments>
		
	</item>

	<item>
		<title>Как написать компилятор Бейсика для Dendy?</title>
		<link>http://rsdn.org/Forum/asm/8834881.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/asm/8834881</guid>
		<comments>http://rsdn.org/Forum/asm/8834881</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=8834881</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/8834881</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=8834881</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Решил попробовать сабж, это должно быть интересным проектом, увлекательной задачей для ума, да и любителям блогера Кинамана, ретроигр и эмуляторов была бы интересна подобная программа.&lt;br /&gt;
В идеале хотелось бы полноценный игровой конструктор уровня Game Maker, с редактором спрайтов, тайлов и музыки и конструированием уровней мышкой, но для начала ограничился просто Бейсиком.&lt;br /&gt;
Сам Бейсик будет максимально приближен к Sinclair Basic (на ZX Spectrum), MSX BASIC и QBASIC, планируются встроенные команды для спрайтов и тайлов, циклы, модули, процедуры и функции, но не будет записей/структур (только массивы, строки и целые числа, последние и для логических операций как в Си).&lt;br /&gt;
&lt;br /&gt;
Для лучшего понимания &amp;mdash; архитектура компьютера NES/Famicom и его клонов.&lt;br /&gt;
&lt;br /&gt;
Процессор: 8-битный Ricoh 2A03, совместимый с MOS 6502 (не поддерживаются двоично-десятичные числа), содержит также контроллер DMA в кристалле&lt;br /&gt;
ОЗУ: 2 КБ (на картриджах может быть дополнительно до 48 КБ)&lt;br /&gt;
ПЗУ: 8 КБ на картриджах (с маппингом может быть более 64 КБ)&lt;br /&gt;
Видеокарта: PPU с поддержкой до 256 тайлов (символов 8x8 цветного шрифта с пикселями из 3 цветов), 64 цветными спрайтами (8x8 или 8x16) и палитрой 48 цветов (по 3 цвета на каждый спрайт или тайл)&lt;br /&gt;
Видеопамять: 2/4 КБ (с аппаратным скроллингом 4-экранной тайловой карты 64x56)&lt;br /&gt;
Разрешение экрана: 256x224 (NTSC) или 256x240 (PAL/SECAM)&lt;br /&gt;
&lt;br /&gt;
Как архитектурно может быть устроен подобный компилятор? Я выбрал такую схему:&lt;br /&gt;
1) лексический анализатор читает исходники, пропускает комментарии, разбивает текст на токены &amp;mdash; ключевые слова, строки, числа (читается файл главного модуля и другие модули, импортируемые в нем);&lt;br /&gt;
2) семантический анализатор получает наборы токенов (для каждого файла модуля), строит по ним единое AST;&lt;br /&gt;
3) дерево AST обрабатывается препроцессором, основанным на мини-Лиспе для оптимизации, выкидывания ненужных имен и конструкций, замены деления на 2 сдвигами, хвостовой рекурсии циклами и т.д.;&lt;br /&gt;
4) результатом прероцессора будет шитый код как на Форте, где все данные кладутся в стек и вызываются функции для их обработки (вроде программы на Форте особо не тормозили, по быстродействию были сравнимы с Си и Фортраном);&lt;br /&gt;
5) далее уже шитый код можно преобразовать в нативный, т.е. инструкции процессора 6502 для Донди.&lt;br /&gt;
&lt;br /&gt;
Или слишком избыточно, и можно что-то упростить? За годы Java энтерпрайза, паттернов проектирования и микросервисных архитектур совсем отвык от простых решений.&lt;/div&gt;
				
		</description>
		
		<category>asm</category>
		<pubDate>Sat, 19 Oct 2024 11:42:33 GMT</pubDate>
		
			<author>Worminator X &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>18</slash:comments>
		
	</item>

	<item>
		<title>Как скачать и установить последний MASM SDK ?</title>
		<link>http://rsdn.org/Forum/asm/8761174.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/asm/8761174</guid>
		<comments>http://rsdn.org/Forum/asm/8761174</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=8761174</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/8761174</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=8761174</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Откуда качать? Что для этого нужно (VPN, гражданство США, номер американского телефона, что-то такое?)?&lt;br /&gt;
Если я правильно понимаю, то Microsoft предоставляет &lt;a class=" tips m" href="https://rsdn.org/forum/flame.politics.unfiltered/8760521.all" rel="#cUmkmq" target="_blank" title="Физлица всё"&gt;именно консалтинговые&lt;div class="tooltip" id="cUmkmq"&gt;Автор: Эйнсток Файр&lt;br /&gt;Дата: 13.06.24&lt;/div&gt;&lt;/a&gt; услуги,&lt;br /&gt;
и &lt;a class="microsoft m" href="https://visualstudio.microsoft.com/ru/license-terms/vs2022-ga-diagnosticbuildtools/" target="_blank"&gt;Microsoft EULA&lt;/a&gt;, которую нужно заключить для использования MASM, не сможет быть заключена.&lt;br /&gt;
&lt;br /&gt;
«Support for 64-bit processors was not added until the release of Visual Studio 2005, with MASM 8.0»&lt;br /&gt;
&lt;br /&gt;
именно 11-я версия мне приглянулась потому что она выше чем 8-я и в русской википедии написано:&lt;br /&gt;
«С версии 11 MASM снова &lt;b&gt;&lt;i&gt;выходит как независимый продукт&lt;/i&gt;&lt;/b&gt;, имеется 2 среды разработки обычный (qedit) и для юникода (uniedit).»&lt;br /&gt;
Хотелось бы именно отдельный продукт скачать.&lt;br /&gt;
&lt;br /&gt;
Будет ли MASM работать под Wine?&lt;br /&gt;
&lt;a class="m" href="https://appdb.winehq.org/objectManager.php?sClass=version&amp;amp;iId=16827" target="_blank"&gt;https://appdb.winehq.org/objectManager.php?sClass=version&amp;amp;amp;iId=16827&lt;/a&gt;&lt;br /&gt;
(но тут упоминается не 11-я версия, а 10-я...)&lt;br /&gt;
&lt;br /&gt;
Какая версия MASM SDK вообще последняя?&lt;br /&gt;
&lt;br /&gt;
&lt;a class="wikipedia m" href="https://en.wikipedia.org/wiki/Microsoft_Macro_Assembler" target="_blank"&gt;https://en.wikipedia.org/wiki/Microsoft_Macro_Assembler&lt;/a&gt;&lt;br /&gt;
&lt;blockquote class='q'&gt;&lt;p&gt;After 25 June 2015, there are at least three different MASMs with the version number 14.00.23026. In Microsoft Visual Studio 2015 Enterprise Edition, there is one "amd64_x86" ml and two ml64s, "x86_amd64" and "amd64". They run on different platforms targeting different platforms:&lt;br /&gt;
&lt;br /&gt;
    amd64_x86: generates 64-bit code, runs in a Windows 32-bit environment&lt;br /&gt;
    x86_amd64: generates 32-bit code, runs in a Windows 64-bit environment&lt;br /&gt;
    amd64: generates 64-bit code, runs in a Windows 64-bit environment&lt;/p&gt;&lt;/blockquote&gt;
Я так понимаю, что мне нужна третья.&lt;br /&gt;
&lt;br /&gt;
Искал на странице &lt;br /&gt;
&lt;a class="microsoft m" href="https://visualstudio.microsoft.com/downloads/?q=build+tools" target="_blank"&gt;https://visualstudio.microsoft.com/downloads/?q=build+tools&lt;/a&gt;&lt;br /&gt;
слово masm &amp;mdash; не нашел.&lt;br /&gt;
&lt;br /&gt;
форумhttps://learn.microsoft.com/en-us/cpp/assembler/masm/masm-for-x64-ml64-exe?view=msvc-170&lt;br /&gt;
&lt;a class="m" href="https://masm32.com/board/index.php?board=53.0" target="_blank"&gt;https://masm32.com/board/index.php?board=53.0&lt;/a&gt;&lt;br /&gt;
предлагает какую-то бета-версию от января 2023-го года, причем инсталлятор в виде .exe,&lt;br /&gt;
он страашный (из неофициального непроверенного источника)&lt;br /&gt;
&lt;br /&gt;
&lt;a class="m" href="https://wasm.in/threads/masm64-sdk.33029/" target="_blank"&gt;https://wasm.in/threads/masm64-sdk.33029/&lt;/a&gt;&lt;br /&gt;
говорит, что надо не только предлагаемый архив, но и какие-то файлы от студии, потому что&lt;br /&gt;
«I don't have permission to distribute Microsoft binaries»&lt;br /&gt;
&lt;br /&gt;
&lt;s&gt;Установить yasm и использовать там tasm-синтаксис не предлагать.&lt;/s&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class='q'&gt;&lt;p&gt;The MASM tools &lt;a class="microsoft m" href="https://learn.microsoft.com/en-us/cpp/assembler/masm/masm-for-x64-ml64-exe?view=msvc-170" target="_blank"&gt;aren't available as a separate download&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote class='q'&gt;&lt;p&gt;The MASM command-line tools are installed when you choose a C++ workload during Visual Studio installation.&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote class='q'&gt;&lt;p&gt;If you only want the command-line tools, not the full IDE, download the &lt;a class="microsoft m" href="https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022" target="_blank"&gt;Build Tools for Visual Studio&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
Ой, всё...&lt;/div&gt;
				
		</description>
		
		<category>asm</category>
		<pubDate>Sat, 15 Jun 2024 03:57:46 GMT</pubDate>
		
			<author>Эйнсток Файр &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>4</slash:comments>
		
	</item>

	<item>
		<title>Модуль ядра Linux</title>
		<link>http://rsdn.org/Forum/asm/8756707.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/asm/8756707</guid>
		<comments>http://rsdn.org/Forum/asm/8756707</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=8756707</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/8756707</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=8756707</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Я новичёк в режиме ядра и я взял пример chrdev модуля Linux, работает нормально.&lt;br /&gt;
При чтении устройста данные пользователю отправляет через put_user, в функции&lt;br /&gt;
static ssize_t device_read(struct file *flip, char *buffer, size_t len, loff_t *offset)&lt;br /&gt;
&lt;br /&gt;
если я в этой функции попытаюсь записать или прочитать из buffer, то получаю ошибку в ядре,&lt;br /&gt;
хотя я проверил: указатель buffer валидный и он одинаковый и в режиме ядра и в режиме пользователя.&lt;br /&gt;
перед вызовом read() в режиме ядра буфер проинициализировал.&lt;br /&gt;
&lt;br /&gt;
Сначала я подумал, что модуль работает не в 0-кольце, но проверил два младших бита регистра CS, всё в порядке, модуль в 0 кольце, программа в 3-м кольце.&lt;br /&gt;
&lt;br /&gt;
В чём может быть дело ? Почему в режиме ядра я не могу напрямую обращаться к памяти пользовательского режима ?&lt;/div&gt;
				
		</description>
		
		<category>asm</category>
		<pubDate>Tue, 04 Jun 2024 20:55:51 GMT</pubDate>
		
			<author>maks1180 &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>13</slash:comments>
		
	</item>

	<item>
		<title>MSVC 17.9 и POPCNT</title>
		<link>http://rsdn.org/Forum/asm/8696356.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/asm/8696356</guid>
		<comments>http://rsdn.org/Forum/asm/8696356</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=8696356</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/8696356</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=8696356</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Сперва использовал такой код:&lt;br /&gt;
&lt;pre class='c'&gt;&lt;code&gt;&lt;span class='kw'&gt;int&lt;/span&gt; bitCount(quint32 u)
{
    &lt;span class='kw'&gt;return&lt;/span&gt; __popcnt(u);
}&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Но т.к. POPCNT не поддерживается процессором Core 2 Duo, то заменил на:&lt;br /&gt;
&lt;pre class='c'&gt;&lt;code&gt;&lt;span class='kw'&gt;int&lt;/span&gt; bitCount(quint32 u)
{
    u = u - ((u &amp;gt;&amp;gt; 1) &amp;amp; 0x55555555);
    u = (u &amp;amp; 0x33333333) + ((u &amp;gt;&amp;gt; 2) &amp;amp; 0x33333333);
    &lt;span class='kw'&gt;return&lt;/span&gt; ((u + (u &amp;gt;&amp;gt; 4) &amp;amp; 0xF0F0F0F) * 0x1010101) &amp;gt;&amp;gt; 24;
}&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Недавно обновил MSVC на 17.9 и обнаружил, что код из bitCount() начал автоматически заменяться на POPCNT.&lt;br /&gt;
&lt;br /&gt;
Заменил теперь на:&lt;br /&gt;
&lt;pre class='c'&gt;&lt;code&gt;&lt;span class='kw'&gt;int&lt;/span&gt; bitCount(quint32 u)
{
    &lt;span class='kw'&gt;const&lt;/span&gt; quint32 uCount = u - ((u &amp;gt;&amp;gt; 1) &amp;amp; 033333333333) - ((u &amp;gt;&amp;gt; 2) &amp;amp; 011111111111);
    &lt;span class='kw'&gt;return&lt;/span&gt; ((uCount + (uCount &amp;gt;&amp;gt; 3)) &amp;amp; 030707070707) % 63;
}&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Как можно обезопаситься на будущее, чтобы и этот код не был заменён на POPCNT?&lt;/div&gt;
				
		</description>
		
		<category>asm</category>
		<pubDate>Tue, 20 Feb 2024 16:09:59 GMT</pubDate>
		
			<author>nodir.temir &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>6</slash:comments>
		
	</item>

	<item>
		<title>Какие сейчас самые крупные ПЛИС доступны в России?</title>
		<link>http://rsdn.org/Forum/asm/8693994.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/asm/8693994</guid>
		<comments>http://rsdn.org/Forum/asm/8693994</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=8693994</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/8693994</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=8693994</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Как называются, сколько стоят, как купить, какие у них характеристики?&lt;br /&gt;
&lt;br /&gt;
Я из коммерчески доступного вычислительного знаю только Репку Пи, но она не ПЛИС.&lt;br /&gt;
&lt;br /&gt;
Я понимаю, что что-то делают на Воронежском заводе, но вопрос у меня не что делают,&lt;br /&gt;
а что продаётся с выложенной в интернет документацией, как Spartan 3.&lt;/div&gt;
				
		</description>
		
		<category>asm</category>
		<pubDate>Sat, 17 Feb 2024 01:33:11 GMT</pubDate>
		
			<author>Эйнсток Файр &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>6</slash:comments>
		
	</item>

	<item>
		<title>читать на ядре 0 в Kernel Force</title>
		<link>http://rsdn.org/Forum/asm/8648615.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/asm/8648615</guid>
		<comments>http://rsdn.org/Forum/asm/8648615</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=8648615</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/8648615</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=8648615</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;это правильный подход?&lt;br /&gt;
&lt;br /&gt;
&lt;pre class='c'&gt;&lt;code&gt;&lt;span class='kw'&gt;class&lt;/span&gt; TSingleProcessorMode2
{
    &lt;span class='kw'&gt;volatile&lt;/span&gt; LONG Hub;
    KDPC DpcArray[MAXIMUM_PROCESSORS];
    &lt;span class='kw'&gt;static void&lt;/span&gt; DpcRoutine(KDPC* pDpc, &lt;span class='kw'&gt;void&lt;/span&gt;* pContext, &lt;span class='kw'&gt;void&lt;/span&gt;* pArg1, &lt;span class='kw'&gt;void&lt;/span&gt;* pArg2);
&lt;span class='kw'&gt;public&lt;/span&gt;:
    &lt;span class='kw'&gt;void&lt;/span&gt; Initialize();
    &lt;span class='kw'&gt;void&lt;/span&gt; Execute(&lt;span class='kw'&gt;void&lt;/span&gt;(&lt;span class='kw'&gt;__fastcall&lt;/span&gt;* Routine)(&lt;span class='kw'&gt;void&lt;/span&gt;*), &lt;span class='kw'&gt;void&lt;/span&gt;* pContext);
};



&lt;span class='kw'&gt;void&lt;/span&gt; TSingleProcessorMode2::Initialize()
{
    RtlZeroMemory(&lt;span class='kw'&gt;this&lt;/span&gt;, &lt;span class='kw'&gt;sizeof&lt;/span&gt;(TSingleProcessorMode2));
    &lt;span class='kw'&gt;if&lt;/span&gt; (KeQueryActiveProcessorCount(nullptr) &amp;gt; 1)
        &lt;span class='kw'&gt;for&lt;/span&gt; (&lt;span class='kw'&gt;int&lt;/span&gt; i = 0; i &amp;lt; MAXIMUM_PROCESSORS; i++)
        {
            KeInitializeDpc(&amp;amp;DpcArray[i], DpcRoutine, &lt;span class='kw'&gt;this&lt;/span&gt;);
            KeSetTargetProcessorDpc(&amp;amp;DpcArray[i], (CCHAR)i);
            KeSetImportanceDpc(&amp;amp;DpcArray[i], HighImportance);
        }
}

&lt;span class='kw'&gt;void&lt;/span&gt; TSingleProcessorMode2::DpcRoutine(KDPC* pDpc, &lt;span class='kw'&gt;void&lt;/span&gt;* pContext, &lt;span class='kw'&gt;void&lt;/span&gt;* pArg1, &lt;span class='kw'&gt;void&lt;/span&gt;* pArg2)
{
    TSingleProcessorMode2* pThis = (TSingleProcessorMode2*)pContext;

&lt;span class='kw'&gt;#if&lt;/span&gt; _WIN32_WINNT &amp;lt; 0x0502
    KeRaiseIrqlToSynchLevel();
&lt;span class='kw'&gt;#else&lt;/span&gt;
    &lt;span class='com'&gt;//KIRQL DummyIrql;
    //KeRaiseIrql(12, &amp;amp;DummyIrql);&lt;/span&gt;
    KeRaiseIrqlToSynchLevel();
&lt;span class='kw'&gt;#endif

    while&lt;/span&gt; (&lt;span class='kw'&gt;true&lt;/span&gt;)
    {

        KIRQL DummyIrql;
        KeRaiseIrql(HIGH_LEVEL, &amp;amp;DummyIrql);
        LONG probe, level = InterlockedDecrement(&amp;amp;pThis-&amp;gt;Hub) &amp;lt;&amp;lt; 8;
        &lt;span class='kw'&gt;if&lt;/span&gt; (level == 0)
        {
            ((&lt;span class='kw'&gt;void&lt;/span&gt;(&lt;span class='kw'&gt;__fastcall&lt;/span&gt;*)(&lt;span class='kw'&gt;void&lt;/span&gt;*))pArg1)(pArg2);
            InterlockedExchange(&amp;amp;pThis-&amp;gt;Hub, -1);
        exit:
            KeLowerIrql(DISPATCH_LEVEL);
            &lt;span class='kw'&gt;return&lt;/span&gt;;
        }

        &lt;span class='kw'&gt;do&lt;/span&gt;
        {
            PERFORMANCE_AUTO_COUNT;
            __nop();
            probe = pThis-&amp;gt;Hub;
            &lt;span class='kw'&gt;if&lt;/span&gt; (probe &amp;lt; 0)
                &lt;span class='kw'&gt;goto&lt;/span&gt; exit;
        } &lt;span class='kw'&gt;while&lt;/span&gt; (probe == 0 || --level &amp;gt;= 0
            || InterlockedCompareExchange(&amp;amp;pThis-&amp;gt;Hub, probe + 1, probe) != probe);
        KeLowerIrql(12);
        PERFORMANCE_AUTO_COUNT;
        __nop();
    }
}




&lt;span class='kw'&gt;void&lt;/span&gt; TSingleProcessorMode2::Execute(&lt;span class='kw'&gt;void&lt;/span&gt;(&lt;span class='kw'&gt;__fastcall&lt;/span&gt;* pRoutine)(&lt;span class='kw'&gt;void&lt;/span&gt;*), &lt;span class='kw'&gt;void&lt;/span&gt;* pContext)
{
    KeEnterCriticalRegion();
    KeFlushQueuedDpcs();

    &lt;span class='kw'&gt;if&lt;/span&gt; (KeQueryActiveProcessorCount(nullptr) &amp;gt; 1)
    {
        KAFFINITY ActiveProcessors = KeQueryActiveProcessors();
        KIRQL Irql;
        KeRaiseIrql(DISPATCH_LEVEL, &amp;amp;Irql);

        KAFFINITY Mask = 1ul &amp;lt;&amp;lt; 0; &lt;span class='com'&gt;// Mask for core 0&lt;/span&gt;
        &lt;span class='kw'&gt;if&lt;/span&gt; ((ActiveProcessors &amp;amp; Mask) != 0 &amp;amp;&amp;amp; KeGetCurrentProcessorNumber() != 0)
        {
            ActiveProcessors &amp;amp;= ~Mask; &lt;span class='com'&gt;// Clear the bit for core 0 first&lt;/span&gt;
            KeInsertQueueDpc(&amp;amp;DpcArray[0], pRoutine, pContext); &lt;span class='com'&gt;// Queue DPC for core 0&lt;/span&gt;
        }

        KeLowerIrql(Irql);
    }
    &lt;span class='kw'&gt;else&lt;/span&gt;
    {
        KIRQL DummyIrql;
        KeRaiseIrql(HIGH_LEVEL, &amp;amp;DummyIrql);
        pRoutine(pContext);
        KeLowerIrql(DummyIrql);
    }

    KeFlushQueuedDpcs();
    KeLeaveCriticalRegion();
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
				
		</description>
		
		<category>asm</category>
		<pubDate>Sun, 10 Dec 2023 01:01:39 GMT</pubDate>
		
			<author>v0zxw &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>0</slash:comments>
		
	</item>

	<item>
		<title>драйвер принтера с x32 на x64</title>
		<link>http://rsdn.org/Forum/asm/8624421.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/asm/8624421</guid>
		<comments>http://rsdn.org/Forum/asm/8624421</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=8624421</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/8624421</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=8624421</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Есть драйвер для принтера на x32 битные системы. Нужно подключить принтер к x64 системе.&lt;br /&gt;
Попробовал переписать драйвер для x64, но при установке система выдаёт ошибку &lt;br /&gt;
&lt;br /&gt;
Драйвер принтера не установлен.&lt;br /&gt;
&lt;br /&gt;
%1 не является приложением Win32. &lt;br /&gt;
&lt;br /&gt;
В чём может быть проблема?&lt;br /&gt;
&lt;br /&gt;
Вот исходный код: &lt;br /&gt;
&lt;pre class='c'&gt;&lt;code&gt;; Canon Advanced Printing Technology 
; Printer INF for Windows 2000/XP/Vista
; Copyright CANON INC. 1998-2007 All Rights Reserved
; CAP3SETK.INF

[Version]
Signature="$Windows NT$"
Provider=%CANON%
ClassGUID={4D36E979-E325-11CE-BFC1-08002BE10318}
Class=Printer
DriverVer=02/05/2007,1.10.0.009
CatalogFile=CAP3SETK.CAT

[ClassInstall32.NT]
AddReg=printer_class_addreg

[printer_class_addreg]
HKR,,,,%PrinterClassName%
HKR,,Icon,,"-4"
HKR,,Installer32,,"ntprint.dll,ClassInstall32"
HKR,,NoDisplayClass,,1
HKR,,EnumPropPages32,,"printui.dll,PrinterPropPageProvider"

[Manufacturer]
%CANON%=CANON

;Windows2000/XP/Vista
[Canon]
%DEVICE% = CAP3.NTx86,USBPRINT\CanonLASER_SHOT_LBP-91D2,Canon_LASER_SHOT_LBP-1120

[CAP3.NTx86]
CopyFiles=CAP3_SYS_FILES,CAP3_ALL_FILES
DataFile=CAP3K.DLL
DataSection=CAP3_DATA

[CAP3_DATA]
DriverFile  = CAP3K.DLL
ConfigFile  = CAP3UIK.DLL
HelpFile    = CAP3.HLP
LanguageMonitor=%CAP3_LMON_NT%

[CAP3_SYS_FILES]
CAP3SMK.DLL,,,0x00000020
CAP3LMK.DLL,,,0x00000020
CAP3RSK.EXE,,,0x00000020
CAP3EMN.DLL,,,0x00000020
CAP3PTMN.DLL,,,0x00000020

[CAP3_ALL_FILES]
CAP3SETK.DLL
CAP3UNIK.EXE
CAP3SMK.DLL
CAP3LMK.DLL
CAP3RSK.EXE
CAP3EMN.DLL
CAP3PTMN.DLL
CAP3LAK.EXE
CAP3SWK.EXE
CAP3PMN.DLL
CAP3RDN.DLL
CAP3HT.BIN
CAP3K.DLL
CAP3UIK.DLL
CAP3APPN.DAT
CAP3INFK.DAT
CAP3.HLP
CAP3.CNT
CAP3ONN.EXE
CAP3ZWAV.BIN

[OEM URLS]
"Canon" = "http://www.canon.com/support"

[DestinationDirs]
DefaultDestDir=66000
CAP3_SYS_FILES=66002

[SourceDisksNames]
1 = %FD1%,,,
2 = %FD2%,,,

[SourceDisksFiles]
CAP3INFK.DAT  = 1
CAP3APPN.DAT  = 1
CAP3SETK.DLL  = 1
CAP3UNIK.EXE  = 1
CAP3SMK.DLL   = 1
CAP3LMK.DLL   = 1
CAP3RSK.EXE   = 1
CAP3EMN.DLL   = 1
CAP3PTMN.DLL  = 1
CAP3LAK.EXE   = 1
CAP3SWK.EXE   = 1
CAP3PMN.DLL   = 1
CAP3RDN.DLL   = 1
CAP3HT.BIN    = 1
CAP3K.DLL     = 1
CAP3UIK.DLL   = 1
CAP3.HLP      = 1
CAP3.CNT      = 1
CAP3ONN.EXE   = 1
CAP3ZWAV.BIN  = 2

[Strings]
CANON             = "Canon"
PrinterClassName  = "Printer"
DEVICE            = "Canon LASER SHOT LBP-1120"
CAP3_LMON_NT      = "CAP3 Monitor,CAP3LMK.DLL"
FD1               = "                     1 Canon LASER SHOT LBP-1120 (Windows Vista)"
FD2               = "                     2 Canon LASER SHOT LBP-1120 (Windows Vista)"&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Вот мой: &lt;br /&gt;
&lt;pre class='c'&gt;&lt;code&gt;; Canon Advanced Printing Technology 
; Printer INF for Windows 2000/XP/Vista
; Copyright CANON INC. 1998-2007 All Rights Reserved
; CAP3SETK.INF

[Version]
Signature="$Windows NT$"
Provider=%CANON%
ClassGUID={4D36E979-E325-11CE-BFC1-08002BE10318}
Class=Printer
CatalogFile=CAP3SETK.CAT

[ClassInstall32]
AddReg=printer_class_addreg

[ClassInstall32.ntamd64]
AddReg=printer_class_addreg

[printer_class_addreg]
HKR,,,,%PrinterClassName%
HKR,,Icon,,"-4"
HKR,,Installer64,,"ntprint.dll,ClassInstall64"
HKR,,NoDisplayClass,,1
HKR,,EnumPropPages64,,"printui.dll,PrinterPropPageProvider"

[Manufacturer]
%CANON%=CANON, NTamd64

;Win7 x64
[Canon.NTamd64]
%DEVICE% = CAP3.NTamd64,USBPRINT\CanonLASER_SHOT_LBP-91D2,Canon_LASER_SHOT_LBP-1120

[CAP3.NTamd64]
DriverVer=02/05/2007,1.10.0.009
CopyFiles=CAP3_SYS_FILES,CAP3_ALL_FILES
DataFile=CAP3K.DLL
DataSection=CAP3_DATA

[CAP3_DATA]
DriverFile  = CAP3K.DLL
ConfigFile  = CAP3UIK.DLL
HelpFile    = CAP3.HLP
LanguageMonitor=%CAP3_LMON_NT%

[CAP3_SYS_FILES]
CAP3SMK.DLL,,,0x00000020
CAP3LMK.DLL,,,0x00000020
CAP3RSK.EXE,,,0x00000020
CAP3EMN.DLL,,,0x00000020
CAP3PTMN.DLL,,,0x00000020

[CAP3_ALL_FILES]
CAP3SETK.DLL
CAP3UNIK.EXE
CAP3SMK.DLL
CAP3LMK.DLL
CAP3RSK.EXE
CAP3EMN.DLL
CAP3PTMN.DLL
CAP3LAK.EXE
CAP3SWK.EXE
CAP3PMN.DLL
CAP3RDN.DLL
CAP3HT.BIN
CAP3K.DLL
CAP3UIK.DLL
CAP3APPN.DAT
CAP3INFK.DAT
CAP3.HLP
CAP3.CNT
CAP3ONN.EXE
CAP3ZWAV.BIN

[OEM URLS]
"Canon" = "http://www.canon.com/support"

[DestinationDirs]
DefaultDestDir=66000
CAP3_SYS_FILES=66002

[SourceDisksNames]
1 = %FD1%,,,
2 = %FD2%,,,

[SourceDisksFiles]
CAP3INFK.DAT  = 1
CAP3APPN.DAT  = 1
CAP3SETK.DLL  = 1
CAP3UNIK.EXE  = 1
CAP3SMK.DLL   = 1
CAP3LMK.DLL   = 1
CAP3RSK.EXE   = 1
CAP3EMN.DLL   = 1
CAP3PTMN.DLL  = 1
CAP3LAK.EXE   = 1
CAP3SWK.EXE   = 1
CAP3PMN.DLL   = 1
CAP3RDN.DLL   = 1
CAP3HT.BIN    = 1
CAP3K.DLL     = 1
CAP3UIK.DLL   = 1
CAP3.HLP      = 1
CAP3.CNT      = 1
CAP3ONN.EXE   = 1
CAP3ZWAV.BIN  = 2

[Strings]
CANON             = "Canon"
PrinterClassName  = "Printer"
DEVICE            = "Canon LASER SHOT LBP-1120"
CAP3_LMON_NT      = "CAP3 Monitor,CAP3LMK.DLL"
FD1               = "                     1 Canon LASER SHOT LBP-1120 (Windows Vista)"
FD2               = "                     2 Canon LASER SHOT LBP-1120 (Windows Vista)"&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Или это проблема в совместимости приложений принтера и системы? Может кто-то знает&lt;br /&gt;
Буду очень благодарен&lt;/div&gt;
				
		</description>
		
		<category>asm</category>
		<pubDate>Tue, 24 Oct 2023 20:44:00 GMT</pubDate>
		
			<author>SPYTNIK444 &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>2</slash:comments>
		
	</item>

	<item>
		<title>как переписать .inf файл драйвера принтера под Windows 7 x64</title>
		<link>http://rsdn.org/Forum/asm/8624397.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/asm/8624397</guid>
		<comments>http://rsdn.org/Forum/asm/8624397</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=8624397</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/8624397</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=8624397</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Есть драйвер для принтера на x32 битные системы. Нужно подключить принтер к x64 системе. &lt;br /&gt;
Попробовал переписать драйвер для x64, но при установке система всё равно ругается. &lt;br /&gt;
В чём может быть проблема?&lt;br /&gt;
&lt;br /&gt;
Вот исходный: &lt;br /&gt;
 &lt;br /&gt;
&lt;pre class='c'&gt;&lt;code&gt;; Canon Advanced Printing Technology 
; Printer INF for Windows 2000/XP/Vista
; Copyright CANON INC. 1998-2007 All Rights Reserved
; CAP3SETK.INF

[Version]
Signature="$Windows NT$"
Provider=%CANON%
ClassGUID={4D36E979-E325-11CE-BFC1-08002BE10318}
Class=Printer
DriverVer=02/05/2007,1.10.0.009
CatalogFile=CAP3SETK.CAT

[ClassInstall32.NT]
AddReg=printer_class_addreg

[printer_class_addreg]
HKR,,,,%PrinterClassName%
HKR,,Icon,,"-4"
HKR,,Installer32,,"ntprint.dll,ClassInstall32"
HKR,,NoDisplayClass,,1
HKR,,EnumPropPages32,,"printui.dll,PrinterPropPageProvider"

[Manufacturer]
%CANON%=CANON

;Windows2000/XP/Vista
[Canon]
%DEVICE% = CAP3.NTx86,USBPRINT\CanonLASER_SHOT_LBP-91D2,Canon_LASER_SHOT_LBP-1120

[CAP3.NTx86]
CopyFiles=CAP3_SYS_FILES,CAP3_ALL_FILES
DataFile=CAP3K.DLL
DataSection=CAP3_DATA

[CAP3_DATA]
DriverFile  = CAP3K.DLL
ConfigFile  = CAP3UIK.DLL
HelpFile    = CAP3.HLP
LanguageMonitor=%CAP3_LMON_NT%

[CAP3_SYS_FILES]
CAP3SMK.DLL,,,0x00000020
CAP3LMK.DLL,,,0x00000020
CAP3RSK.EXE,,,0x00000020
CAP3EMN.DLL,,,0x00000020
CAP3PTMN.DLL,,,0x00000020

[CAP3_ALL_FILES]
CAP3SETK.DLL
CAP3UNIK.EXE
CAP3SMK.DLL
CAP3LMK.DLL
CAP3RSK.EXE
CAP3EMN.DLL
CAP3PTMN.DLL
CAP3LAK.EXE
CAP3SWK.EXE
CAP3PMN.DLL
CAP3RDN.DLL
CAP3HT.BIN
CAP3K.DLL
CAP3UIK.DLL
CAP3APPN.DAT
CAP3INFK.DAT
CAP3.HLP
CAP3.CNT
CAP3ONN.EXE
CAP3ZWAV.BIN

[OEM URLS]
"Canon" = "http://www.canon.com/support"

[DestinationDirs]
DefaultDestDir=66000
CAP3_SYS_FILES=66002

[SourceDisksNames]
1 = %FD1%,,,
2 = %FD2%,,,

[SourceDisksFiles]
CAP3INFK.DAT  = 1
CAP3APPN.DAT  = 1
CAP3SETK.DLL  = 1
CAP3UNIK.EXE  = 1
CAP3SMK.DLL   = 1
CAP3LMK.DLL   = 1
CAP3RSK.EXE   = 1
CAP3EMN.DLL   = 1
CAP3PTMN.DLL  = 1
CAP3LAK.EXE   = 1
CAP3SWK.EXE   = 1
CAP3PMN.DLL   = 1
CAP3RDN.DLL   = 1
CAP3HT.BIN    = 1
CAP3K.DLL     = 1
CAP3UIK.DLL   = 1
CAP3.HLP      = 1
CAP3.CNT      = 1
CAP3ONN.EXE   = 1
CAP3ZWAV.BIN  = 2

[Strings]
CANON             = "Canon"
PrinterClassName  = "Printer"
DEVICE            = "Canon LASER SHOT LBP-1120"
CAP3_LMON_NT      = "CAP3 Monitor,CAP3LMK.DLL"
FD1               = "Установочная дискета 1 Canon LASER SHOT LBP-1120 (Windows Vista)"
FD2               = "Установочная дискета 2 Canon LASER SHOT LBP-1120 (Windows Vista)"&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Вот что я сделал:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class='c'&gt;&lt;code&gt;; Canon Advanced Printing Technology 
; Printer INF for Windows 2000/XP/Vista
; Copyright CANON INC. 1998-2007 All Rights Reserved
; CAP3SETK.INF

[Version]
Signature="$Windows NT$"
Provider=%CANON%
ClassGUID={4D36E979-E325-11CE-BFC1-08002BE10318}
Class=Printer
CatalogFile=CAP3SETK.CAT

[ClassInstall32]
AddReg=printer_class_addreg

[ClassInstall64]
AddReg=printer_class_addreg

[printer_class_addreg]
HKR,,,,%PrinterClassName%
HKR,,Icon,,"-4"
HKR,,Installer32,,"ntprint.dll,ClassInstall32"
HKR,,Installer64,,"ntprint.dll,ClassInstall64"
HKR,,NoDisplayClass,,1
HKR,,EnumPropPages32,,"printui.dll,PrinterPropPageProvider"

[Manufacturer]
%CANON%=CANON, NTx86, NTamd64

;Windows2000/XP/Vista
[Canon.NTx86]
%DEVICE% = CAP3.NTx86,USBPRINT\CanonLASER_SHOT_LBP-91D2,Canon_LASER_SHOT_LBP-1120

;Win7 x64
[Canon.NTx64]
%DEVICE% = CAP3.NTx64,USBPRINT\CanonLASER_SHOT_LBP-91D2,Canon_LASER_SHOT_LBP-1120

[CAP3.NTx86]
DriverVer=02/05/2007,1.10.0.009
CopyFiles=CAP3_SYS_FILES,CAP3_ALL_FILES
DataFile=CAP3K.DLL
DataSection=CAP3_DATA

[CAP3.NTamd64]
DriverVer=02/05/2007,1.10.0.009
CopyFiles=CAP3_SYS_FILES,CAP3_ALL_FILES
DataFile=CAP3K.DLL
DataSection=CAP3_DATA

[CAP3_DATA]
DriverFile  = CAP3K.DLL
ConfigFile  = CAP3UIK.DLL
HelpFile    = CAP3.HLP
LanguageMonitor=%CAP3_LMON_NT%

[CAP3_SYS_FILES]
CAP3SMK.DLL,,,0x00000020
CAP3LMK.DLL,,,0x00000020
CAP3RSK.EXE,,,0x00000020
CAP3EMN.DLL,,,0x00000020
CAP3PTMN.DLL,,,0x00000020

[CAP3_ALL_FILES]
CAP3SETK.DLL
CAP3UNIK.EXE
CAP3SMK.DLL
CAP3LMK.DLL
CAP3RSK.EXE
CAP3EMN.DLL
CAP3PTMN.DLL
CAP3LAK.EXE
CAP3SWK.EXE
CAP3PMN.DLL
CAP3RDN.DLL
CAP3HT.BIN
CAP3K.DLL
CAP3UIK.DLL
CAP3APPN.DAT
CAP3INFK.DAT
CAP3.HLP
CAP3.CNT
CAP3ONN.EXE
CAP3ZWAV.BIN

[OEM URLS]
"Canon" = "http://www.canon.com/support"

[DestinationDirs]
DefaultDestDir=66000
CAP3_SYS_FILES=66002

[SourceDisksNames]
1 = %FD1%,,,
2 = %FD2%,,,

[SourceDisksFiles]
CAP3INFK.DAT  = 1
CAP3APPN.DAT  = 1
CAP3SETK.DLL  = 1
CAP3UNIK.EXE  = 1
CAP3SMK.DLL   = 1
CAP3LMK.DLL   = 1
CAP3RSK.EXE   = 1
CAP3EMN.DLL   = 1
CAP3PTMN.DLL  = 1
CAP3LAK.EXE   = 1
CAP3SWK.EXE   = 1
CAP3PMN.DLL   = 1
CAP3RDN.DLL   = 1
CAP3HT.BIN    = 1
CAP3K.DLL     = 1
CAP3UIK.DLL   = 1
CAP3.HLP      = 1
CAP3.CNT      = 1
CAP3ONN.EXE   = 1
CAP3ZWAV.BIN  = 2

[Strings]
CANON             = "Canon"
PrinterClassName  = "Printer"
DEVICE            = "Canon LASER SHOT LBP-1120"
CAP3_LMON_NT      = "CAP3 Monitor,CAP3LMK.DLL"
FD1               = "Установочная дискета 1 Canon LASER SHOT LBP-1120 (Windows Vista)"
FD2               = "Установочная дискета 2 Canon LASER SHOT LBP-1120 (Windows Vista)"&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Подскажите, если что не так. В первый раз этим занимаюсь. Может надо было для каждой битности каждый inf?&lt;br /&gt;
Буду признательно благодарен!&lt;/div&gt;
				
		</description>
		
		<category>asm</category>
		<pubDate>Tue, 24 Oct 2023 20:00:50 GMT</pubDate>
		
			<author>SPYTNIK444 &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>4</slash:comments>
		
	</item>

	<item>
		<title>Win: чем посмотреть состояние запросов к устройству?</title>
		<link>http://rsdn.org/Forum/asm/8617484.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/asm/8617484</guid>
		<comments>http://rsdn.org/Forum/asm/8617484</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=8617484</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/8617484</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=8617484</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;В винде под WinDbg можно посмотреть, какие IRP стоят в очереди к устройству или обрабатываются в текущий момент. А чем это можно посмотреть непосредственно из живой системы? Всякие DiskMon, ProcessMonitor и подобные показывают только завершенные операции, но не те, что находятся в состоянии обработки или ждут в очереди.&lt;/div&gt;
				
		</description>
		
		<category>asm</category>
		<pubDate>Fri, 13 Oct 2023 19:03:04 GMT</pubDate>
		
			<author>Евгений Музыченко &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>4</slash:comments>
		
	</item>

	<item>
		<title>Отечественные микроконтроллеры</title>
		<link>http://rsdn.org/Forum/asm/8600337.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/asm/8600337</guid>
		<comments>http://rsdn.org/Forum/asm/8600337</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=8600337</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/8600337</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=8600337</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Как обстоят дела с сабжем? Оборонка же должна на чём-то программироваться. Или берут всякие китайские клоны?&lt;/div&gt;
				
		</description>
		
		<category>asm</category>
		<pubDate>Sat, 16 Sep 2023 00:24:36 GMT</pubDate>
		
			<author>cppguard &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>7</slash:comments>
		
	</item>

	<item>
		<title>Хранение управляющей структуры в вызывающем объекте</title>
		<link>http://rsdn.org/Forum/asm/8576310.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/asm/8576310</guid>
		<comments>http://rsdn.org/Forum/asm/8576310</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=8576310</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/8576310</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=8576310</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Пытаюсь реализовать полность асинхронную обработку I2C без выделения памяти. Нюанс этой шины в том, что чтобы что-то прочитать, нужно сперва записать адрес регистра, из которого нужно выполнить чтение. И с точки зрения машины состояний, эти два шага &amp;mdash; независимые. Если бы сиутация была как с UART, то достаточно было бы завести кольцевой буфер и все запросы на чтение и запись сваливать туда. А тут требуется разбивать запросы логически на блоки, иначе как понять, что после записи очередной порции данных, теперь нужно считывать? &lt;br /&gt;
&lt;br /&gt;
Я подумал, что задачу можно решить следующим образом. Пусть инициаторы запросов сами формируют структуру сообщения, а драйвер I2C будет лишь связывать структуры в список и исполнять машину состояний для очередного сообщения. После очередного достижения терминального состония, текущее сообщение удаляется из списка (для связного списка это просто переприсваивание указателей), и в обработку берётся следующее, если оно есть.&lt;br /&gt;
&lt;br /&gt;
Например, структура сообщения может иметь вид:&lt;br /&gt;
&lt;pre class='c'&gt;&lt;code&gt;&lt;span class='kw'&gt;struct&lt;/span&gt; msg {
  &lt;span class='kw'&gt;int&lt;/span&gt; type; &lt;span class='com'&gt;// 0 - READ, 1 - WRITE&lt;/span&gt;
  &lt;span class='kw'&gt;int&lt;/span&gt; size;
  &lt;span class='kw'&gt;char&lt;/span&gt; *data;
  msg *prev;
  msg *next;
  &lt;span class='kw'&gt;void&lt;/span&gt; (*callback)(); &lt;span class='com'&gt;// вызывается драйвером из прерывания, когда данные прочитаны/записаны&lt;/span&gt;
};&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Тогда инициатор запроса будет заполнят нужные поля сам и отправлять сообщение драйверу. Драйвер добавляет сообщение в начало списка, а обрабатывает список с конца (или наоборот, это неважно). Весь код является последовательным, и только прерывания добавляют асинхронности, поэтому каждому пользователю шины достаточно хранить одну структуру сообщения в статической памяти. Таким образом достигается и потокобезопасность, и отсутствие необходимости в динамической мапяти.&lt;br /&gt;
&lt;br /&gt;
Как идея &amp;mdash; имеет право на жизнь?&lt;/div&gt;
				
		</description>
		
		<category>asm</category>
		<pubDate>Tue, 08 Aug 2023 22:20:35 GMT</pubDate>
		
			<author>cppguard &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>8</slash:comments>
		
	</item>

	<item>
		<title>Выбор МК для коммерческого проекта</title>
		<link>http://rsdn.org/Forum/asm/8560153.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/asm/8560153</guid>
		<comments>http://rsdn.org/Forum/asm/8560153</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=8560153</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/8560153</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=8560153</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Как правильно сделать оценку BOM для проекта на микроконтроллере уровня AVR ATtiny или STM32? Я правильно понимаю, что в России никто не занимается изготовлением плат с микроконтроллерами на заказ, и нужно заказывать в Китае?&lt;br /&gt;
&lt;br /&gt;
P.S. Существует специализованноый русскоязычный ресурс для вопросов такого плана? Как здешний подфорум shareware, только про аппаратные и низкоуровневые дела?&lt;/div&gt;
				
		</description>
		
		<category>asm</category>
		<pubDate>Mon, 10 Jul 2023 23:59:44 GMT</pubDate>
		
			<author>cppguard &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>1</slash:comments>
		
	</item>

	<item>
		<title>Запись из прерывания, чтение из основного потока</title>
		<link>http://rsdn.org/Forum/asm/8556041.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/asm/8556041</guid>
		<comments>http://rsdn.org/Forum/asm/8556041</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=8556041</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/8556041</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=8556041</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Допустим, у нас 8-ми битный МК типа AVR, какой-нибудь датчик угла/скорости/влажности/жадности, который отдаёт своё значение через два регистра &amp;mdash; в одном low-byte, в другом high-byte, при этом у датчика есть регистр ready, который устанавливается в HIGH, когда данные готовы для чтения. Теперь мы хотим усреднить показания датчика за секунду и что-то сделать с этим значением. Как я понял, это довольно типичная задача. Для этого мы вешаем прерывание на ready, и из прерывания обновляем значение показания датчика, а в основном потоке только используем это значение. Как правильно выстроить логику? Если бы значения укладывались в 1 байт, то было бы всё просто. Но с двумя байтами может быть так, что функция чтения видит старое значение в low-байте, происходит прерывание, и в high-байте уже новое значение.&lt;/div&gt;
				
		</description>
		
		<category>asm</category>
		<pubDate>Mon, 03 Jul 2023 22:07:38 GMT</pubDate>
		
			<author>cppguard &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>9</slash:comments>
		
	</item>

	<item>
		<title>Как правильно перехватить аргумент элипсис?</title>
		<link>http://rsdn.org/Forum/asm/8540003.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/asm/8540003</guid>
		<comments>http://rsdn.org/Forum/asm/8540003</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=8540003</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/8540003</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=8540003</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Привет!&lt;br /&gt;
&lt;br /&gt;
В общем, не помню, как оно правильно называется, ... как в printf.&lt;br /&gt;
&lt;br /&gt;
Есть допустим функция int some_cool_printf(const char* format, ...).&lt;br /&gt;
Сорцов нет, версии с va_args нет, я хочу сделать прокладку типа:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class='c'&gt;&lt;code&gt;&lt;span class='kw'&gt;int&lt;/span&gt; some_cool_printf(&lt;span class='kw'&gt;const char&lt;/span&gt;* format, ...) &lt;span class='com'&gt;// my version of some_cool_printf&lt;/span&gt;
{
    &lt;span class='com'&gt;// do something with args&lt;/span&gt;

    &lt;span class='kw'&gt;auto&lt;/span&gt; orgSomeCoolPrint = getOrgSomeCoolPrint();
    &lt;span class='kw'&gt;return&lt;/span&gt; orgSomeCoolPrint(...);
}
&lt;span class='com'&gt;// ...&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Просто так это не сделать, насколько помню. Тут, по идее, выручил бы не вызов, а переход по адресу some_cool_printf. Ну, и with_log_some_cool_printf должна быть declspec(naked) или как-то так.&lt;br /&gt;
&lt;br /&gt;
Интересует Win32/64, и MSVC, но и про более общие решения было бы интересно узнать.&lt;br /&gt;
&lt;br /&gt;
Вроде бы declspec(naked) нет в x64, не?&lt;br /&gt;
Асма вроде точно в x64 нет, да?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
А что если тупо goto вкорячить, прокатит?&lt;br /&gt;
&lt;pre class='c'&gt;&lt;code&gt;    &lt;span class='kw'&gt;goto&lt;/span&gt; some_cool_printf;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Или через какие-то setjump'ы извращаться?&lt;br /&gt;
Или вручную нагенерить инструкции перехода? Как это правильно сделать? Может, есть что-то подобное готовое?&lt;/div&gt;
				
		</description>
		
		<category>asm</category>
		<pubDate>Thu, 08 Jun 2023 09:37:04 GMT</pubDate>
		
			<author>пффф &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>12</slash:comments>
		
	</item>

	<item>
		<title>iMul как считает CPU</title>
		<link>http://rsdn.org/Forum/asm/8508463.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/asm/8508463</guid>
		<comments>http://rsdn.org/Forum/asm/8508463</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=8508463</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/8508463</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=8508463</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;с add и sub понятно &amp;mdash; там отрицательные и положительные числа считаются одинаково...&lt;br /&gt;
а как считает imul &amp;mdash; он что определяет является ли число отрицательным, потом извлекает знак и переводит в положительное число, а потом умножает?&lt;br /&gt;
с idiv тоже самое?&lt;/div&gt;
				
		</description>
		
		<category>asm</category>
		<pubDate>Wed, 19 Apr 2023 07:27:47 GMT</pubDate>
		
			<author>VVVa &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>9</slash:comments>
		
	</item>
</channel>
</rss>
