Форум программистов, компьютерный форум, киберфорум
Assembler: MASM64, х64/long mode
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/40: Рейтинг темы: голосов - 40, средняя оценка - 4.80
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6816 / 2055 / 239
Регистрация: 14.12.2014
Сообщений: 4,318
Записей в блоге: 12

Процедуры в MASM64. Я не понимаю

16.12.2017, 23:49. Показов 8753. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
MASM64 меня, конечно, убивает.
Я про temphls.inc от vasil211[бабайка]yandex.ru

1. Если у процедуры нет параметров и локальных переменных, то пролог не генерируется. Это при том, что присутствуют опции:
Assembler
1
2
OPTION PROLOGUE:rbpFramePrologue
OPTION EPILOGUE:rbpFrameEpilogue
Для себя нашёл выход: при отсутствии параметров (и локалок) пишу Dummy:QWORD. Но это маразм.
Может, есть всё же правильный вариант добавить пролог без костылей и не вручную?

2. При обращении в параметрам а-ля mov rax,Param генерируется инструкция mov rax,[rbp+10h], а не mov rax,rcx. Это в общем-то логично.
Но тут 2 вопроса:
а) Можно ли сделать так, чтобы обращение шло именно к регистрам?
б) Можно ли задать какую-то директиву, чтобы в прологе генерировался код вроде mov [rbp+10h],rcx, если далее по тексту есть обращение к параметру по идентификатору?

3. invoke не контролирует кол-во параметров (а-ля fasm с include'ами без 'p'). Ну это ладно. Попробуйте написать что-то вроде invoke CreatePen, PS_SOLID, rcx, rdx и получите вот такую красоту:
Assembler
1
2
3
4
xor ecx,ecx  ; mov ecx,PS_SOLID
mov rdx,rcx  ; отлично!
mov r8,rdx  ; вообще супер!
call CreatePen
браво!

Я всё понимаю... это не фирмОвый include (я про temphls.inc).
Но как с этим всем бороться?!
Кстати, по поводу последнего варианта я уже писал некоторое время назад, что сделал функцию присвоения значений регистрам с учётом порядка (см. тут: Выбор порядка загрузки значений в регистры). Может, кто-то захочет переделать под MASM64?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.12.2017, 23:49
Ответы с готовыми решениями:

Masm64
Пыталась написать программу на masm64, но компилятор то библиотеку не открывает, то команда неизвестная, то ещё что-то. Попыталась...

Masm64 и winAPI
Здравствуйте. даже не знаю в какую тему писать, с получившейся проблемой. Нужно написать графическое приложение на winAPI но обязательным...

Error A2081, masm64
mov wc.lpszClassName, offset ClassName Данный момент должен разворачиваться компилятором. Взамен мы получаем. error A2081:missing...

21
250 / 60 / 6
Регистрация: 21.05.2017
Сообщений: 75
15.03.2018, 21:12
Студворк — интернет-сервис помощи студентам
Случайно попалась хорошая работа энтузиаста под ником simon-whitehead.
Он пишет, что если для функции с 5 параметрами сделать так:
Assembler
1
2
3
4
5
6
7
8
sub rsp,0x20
...
mov rcx,a
mov rdx,b
mov r8,c
mov r9,d
push e
call add
то получится такая проблема:
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
+-----------------+
|  r9 Shadow (8)  |
+-----------------+
|  r8 Shadow (8)  |
+-----------------+
| rdx Shadow (8)  |
+-----------------+
| rcx Shadow (8)  |
+-----------------+
|        e        |  
+-----------------+
|   Return Addr   | 
+-----------------+
|    Saved RBP    | <--- RSP
+-----------------+
Добавлено через 6 минут
Поэтому надо:
Assembler
1
2
3
4
sub rsp,0x30
...
mov [rsp+20],e
call add
и тогда будет:
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
+-----------------+
|        e        |
+-----------------+
|  r9 Shadow (8)  |
+-----------------+
|  r8 Shadow (8)  |
+-----------------+
| rdx Shadow (8)  |
+-----------------+
| rcx Shadow (8)  | <--- RSP (before call)
+-----------------+
|   Return Addr   | 
+-----------------+
|    Saved RBP    | <--- RSP (after call)
+-----------------+
1
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6816 / 2055 / 239
Регистрация: 14.12.2014
Сообщений: 4,318
Записей в блоге: 12
16.03.2018, 00:59  [ТС]
ml64, а вы это к чему?
Я об этом не спрашивал, да и это не открытие, так и все делают, через mov [rsp+20].
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.03.2018, 00:59

Masm64 console hello world
Надыбал кое что, вроде и ошибок нет а ничего не выводит( OPTION DOTNAME option casemap:none include temphls.inc include...

Переход с MASM32 на MASM64
Привет, всем! Мной написана программа (более 20 000 строк), возникла необходимость перехода на 64 bit. Работаю с RadASM. Основной объем...

Соглашения о вызовах и masm64
Недавно начал создавать dll на масме64 для си++. Почитал на http://msdn.microsoft.com/ru-ru/library/ms235286.aspx соглашение о вызовах в...

[masm64] Создать окно с кнопками
Кто сможет помочь,нужно на masm64 создать окно с тремя кнопками: A - закрытие окна, а остальные 2-е запускают 2 приложения. 2 приложения...

Проблемы с начинаниями в ассемблере (masm64)
Хотел начать изучать ассемблер и для этого скачал пакет masm64, сколько не пытался, не брал исходников, ни 1 программа не компилится, хотя...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru