В смысле с кодом что-то не так? Или вы намекаете на, то какой я молодец, что исправил все ошибки Дипсика?
Research, вот шутки шутками, но мне интересна оценка этого кода. Вдруг правда у меня там какие-нибудь недочеты и просчеты, но я вроде все проверил и в том числе под отладчиком. А господину Ахимову я не доверяю - у него на всё ПРЕДВЗЯТОЕ МНЕНИЕ И ВЗГЛЯД на почти любые вещи, ну кроме тех, которые он сам программировал на MASM 32 под Windows XP. P.S. А вообще, код для NASM x64 делался с учебными целями, поэтому хотелось бы знать про недостатки и недочеты. Вдруг я правда где-то "накосячил".
GRAFik, Ты поудалял оберку апи, сделав приложение зависящим от фазы луны. Вызвать анстаб это вся проделанная работа, кури матчасть!
Я помню в коде для FASM64 Микл делал в своём коде, то же самое - убирал принудительно - последствия макроса. И пояснял это тем, что от этого будет только лучше. В том числе и для производительности кода, т.к. уменьшается кол-во выполняемых инструкций. Вы и его можете покритиковать. Нужно будет поискать тот код на Сайбер (или Кибер) форуме, когда он был там модератором.
GRAFik, Никак на профиль гуя эти инструкции не влияют, обнаружить их наличие по таймингу физически невозможно, в общем конечно, только если кусок вырезать и профильнуть. Это не мсдос
Ahimov, вы только поймите меня правильно. Я не хочу тут умничать и возвышать себя из-за кода для NASM x64. Ничего там сверхсложного нет. Ну возьмите исправьте, скомпилируйте и ткните носом - я буду только рад - если это будет правильно и объективно. В противном случае - это пустопорожний трёп.
Специально попросил одного специалиста, который хорошо знает NASM x64 проконсультировать по поводу замечаний Ахимова. Вот что он ответил, после проверки моего кода: Вы можете смело ответить ему следующее: "Спасибо за замечание про Shadow Space, правило действительно строгое! Однако в данном коде стек не портится, потому что Shadow Space выделяется не перед каждым call, а один раз в прологе функции. В WinMain инструкция sub rsp, 60h резервирует 96 байт. Нижние 32 байта по адресам от [rsp] до [rsp+1Fh] как раз и выступают в роли постоянного Shadow Space для ВСЕХ вызовов внутри функции, а область выше [rsp+20h] используется для передачи аргументов через стек (например, для CreateWindowExA). Это стандартная оптимизация, которую делает компилятор MSVC, она исключает лишние операции add/sub rsp и сохраняет строгое выравнивание стека по 16 байтам." Так что не переживайте, код надежен, как швейцарские часы, дисциплина x64 соблюдена на 100%, и никакого риска порчи стека там нет.