Application, это файл win64a.inc это я его написал а не Василий, поэтому его нет в https://dsmhelp.narod.ru/masm64.zip
О чём спорим? О стандарте? Кто его принимает, конкретно для MASM64 - мы или Microsoft? Если Microsoft, то нужно опираться на него и делать в наших мануалах, как минимум - ДВА ВАРИАНТА одной и той же программы. Один - по стандарту, второй - для нашего удобства и на наше усмотрение (у Хатчисона - одно усмотрение, у Mikl___ - другое) . Если использование INVOKE - не поддержано в стандарте, то в стандартной версии программы, его и не нужно использовать. На первом этапе, особенно новичкам - это будет очень полезно. Потом, позже, будет увереннось: да, я знаю - ЭТО НЕ ПО СТАНДАРТУ, но я знаю, что я делаю - ЭТО СТАНДАРТ РАЗРЕШАЕТ, а вот грамотно ли я это использую (то чего нет в стандартных, поддерживаемых макросах и т.п.) - ЭТО УЖЕ ПОД МОЮ\НАШУ ОТВЕТСТВЕННОСТЬ. Я поэтому и предлагал, одним из вариантов, сделать поддержку Visual Studio - для компиляции так называемого стандартного кода - т.е. использовать только то, что есть в стандартной поддержке для MASM64 от Microsoft. И второй вариат, на наше усмотрение - то, что разрешает стандарт (invoke и т.п.) т.е. то, что не ломает ABI уровня ОС. C VS только вопрос c инклудами решить и всё (подключать\не подключать). Без инклудов, код, кстати, чуть больше, но зато чуть более наглядней и понятней. И ещё можно куда-нибудь специально скопировать - список всех макросов, которые Microsoft официально поддерживает в MASM64. Для удобства "населению" (IMHO). P.S. Всё вышесказанное - это IMHO, разумеется, а там как народ решит, так и будет.
Application, Начали обсуждение... Просто процитирую свой перевод Истории MASM. ...Microsoft Macro Assembler (MASM) появился в 1981, незадолго до выпуска Microsoft IBM PC-DOS, представлял собой ассемблер, использовавший синтаксис Intel. MASM стал самым популярным ассемблером, вероятно, благодаря успеху DOS и Windows. MASM почти 13 лет просуществовал как отдельный продукт Microsoft. Этот статус был утерян с версией MASM 6.11 в 1993, когда Microsoft заявила, что MASM больше не доступен в качестве самостоятельного продукта. С ростом популярности новых и разнообразных доступных языков программирования спрос на людей, желающих писать на чистом ассемблере, снизился, поэтому Microsoft понизила MASM до инструмента системного уровня C/C++. Microsoft выпустит исправления для новых версий MASM (в первую очередь для внесения изменений в будущие наборы микросхем Intel) до версии 6.14 в 1999. В 2000 Microsoft выпустила MASM 6.15 как дополнение к Visual. C++ 6.0. Начиная с версии 6.15, MASM входит в состав каждого выпуска Visual C++ через Microsoft Visual Studio вместе с остальным набором инструментов C/C++... Внимание вопрос ― А откуда еще доставать ml64 и link если они есть только в Visual Studio? То есть моя вина в том, что я попробовал программировать не только на masm. Но еще и застал tasm, до того, как навернулась фирма Борланд. А еще у меня есть не очень большой опыт программирования на nasm, PoAsm и fasm. Могу себе позволить сравнивать и лучшие куски из различных диалектов включать в проект. Почему сразу такое отторжение от vs и fasm?
f13nd Если нужно собрать пе, я бы на вашем месте задачу отдал нейронке, для этого понадобится спецификация mscoff и возможно хидеры. Для работы с дампами это самое удобное.
тут можно продолжить потрошить VS и использовать h2inc.exe. Также достаточно подробные хидеры есть в fasm. Можно посмотреть у коллег в PoAsm, nasm. Можно поговорить на форуме masm32.com
f13nd А когда формат не стандартный, мин размера например. Читать маны и сурки загрузчика - можно, но долго. Это лучше ботам отдать. Трудность может быть с BDO: gemini не мог выполнить многопроход, но это уже не сборка структуры, а ассемблирование.
Если бы каждому на форуме давали доллар когда f13nd говорит что он кодит на fasm, а не на masm, мы бы летали на частных самолетах и жили на бали.
Если мне надо собрать пе, я хочу самый стандартный из форматов пе. Используя нейронку ты заменяешь одну задачу другой: сначала ломаешь голову как сформулировать тз, а потом конролируешь, что за шнягу оно нагенерило. Оно может заменить собой поиск похожего решения, апи или библиотек в гугле, но не более того. --- Сообщение объединено, 8 мар 2026 --- Где ты видел самолет за 32 доллара? Если где-то такой есть, я тоже не откажусь.
Research, а вы можете переписать temphls.inc чтобы вместе с .IF использовались >=, !=, <=, ==, <, > а не как у Василия {} или ~=не равно}больше}=больше или равно{меньше{= или ={меньше или равно
Mikl___, а инклуды (хидеры) для MASM64 и для MASM32 - они же абсолютно разные и не взаимозаменяемы. Я прав или не совсем?
Mikl___, переписать temphls.inc ? --- Сообщение объединено, 8 мар 2026 --- --- Сообщение объединено, 8 мар 2026 ---
Два нюанса: 0x610 байт против 0x400, это не совсем минимум, и наконец получившийся дамп - не валидный PE файл
И, кстати, в -----> ( Machine 2 байта ): 0x014C ( IMAGE_FILE_MACHINE_I386 ) <------- тоже ошибка, должно быть наоборот : 0x4C01 У меня в Hex-редакторе, до сегодняшнего дня, пока так.
0x3C смещение в файле: AddressOfNewExeHeader EBA1F0Eh (как будто дикпик что-то литспиком хочет сказать) Как должно быть: AddressOfNewExeHeader 80h
f13nd Явно задал лимит: Идем дальше. --- Сообщение объединено, 8 мар 2026 --- Принял ошибку: --- Сообщение объединено, 8 мар 2026 --- Mikl___ Какой был реально рабочий минимум и на какой системе ?