Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.61/46: Рейтинг темы: голосов - 46, средняя оценка - 4.61
45 / 45 / 1
Регистрация: 23.05.2009
Сообщений: 92

__asm вставка

01.08.2009, 22:34. Показов 10953. Ответов 43
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть проблема с асм-вставкой нужно возвратить значение в регистр eax.

Проблема написать аналог макроса на С++.
Assembler
1
2
3
4
5
6
7
8
      alloc MACRO bytecount
        invoke GlobalAlloc,GMEM_FIXED or GMEM_ZEROINIT,bytecount
        EXITM <eax>
      ENDM
 
      free MACRO hmemory
        invoke GlobalFree,hmemory
      ENDM
Мой вариант макроса, но он не компилится(.
C++
1
2
3
#include "windows.h"
...
#define alloc(bytecount) (GlobalAlloc((GMEM_FIXED || GMEM_ZEROINIT), sizeof(bytecount));return __asm{<eax>}) //не работает(
C++
1
#define free(hmemory) (GlobalFree(hmemory)) //работает
Добавлено через 5 часов 13 минут 58 секунд
Есть специалисты по С и Ассемблеру помогите или дайте идейку, если не хочется помогать.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.08.2009, 22:34
Ответы с готовыми решениями:

Вставка asm в С++
Здравствуйте! Помогите пожалуйста! Задание: Вычислить арифметическое выражение. Требуется написать функцию на языке C++ с вставкой на...

asm вставка в C++
#include &lt;iostream&gt; int a = 10; void func( int&amp; aIn ) { __asm { mov aIn, 15 } }

asm вставка в C++
есть код #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; slozh(int* pi1, int...

43
45 / 45 / 1
Регистрация: 23.05.2009
Сообщений: 92
02.08.2009, 02:22  [ТС]
Студворк — интернет-сервис помощи студентам
Самое обидное, что ни один совет не попал в точку, кроме с |
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
02.08.2009, 02:23
push eax, pop eax - никакого смысла не несут - можно удалить.

Ты ее не решил, а обошел.
Чтобы в точности было как в MASM - нужно было положить параметры в стек и вызывать GlobalAlloc внутри кода asm.
0
45 / 45 / 1
Регистрация: 23.05.2009
Сообщений: 92
02.08.2009, 02:29  [ТС]
Цитата Сообщение от odip Посмотреть сообщение
push eax, pop eax - никакого смысла не несут - можно удалить.

Ты ее не решил, а обошел.
Чтобы в точности было как в MASM - нужно было положить параметры в стек и вызывать GlobalAlloc внутри кода asm.
Ну call и invoke запрещены, во встроенном ассемблере

Добавлено через 3 минуты 9 секунд
Цитата Сообщение от Skirmisher Посмотреть сообщение
Ну call и invoke запрещены, во встроенном ассемблере
Куда пропал мой код, мое детище
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
02.08.2009, 02:36
Ну call и invoke запрещены, во встроенном ассемблере
call вполне себе работает

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <stdlib.h>
 
void func( void );
 
int main( void ) {
 
__asm
{
    call func
}
 
return 0;
 
}
 
void func( void ) {
 
printf( "func()\n" );
 
}
Добавлено через 56 секунд
invoke не работает - потому что это макрос для MASM.
О чем я тебе уже говорил.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.08.2009, 02:36

asm вставка в C++ часть 2
есть код. за его написание отдельное спасибо Kastaneda) #include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; int...

Asm вставка и возвращаемое системе значение
Здравствуйте. Почему эта программа #include &lt;iostream&gt; using std::cout; using std::cin; int main() { int z = 0; _asm { ...

Asm вставка в С++ возвести число в степень
Возвести число А в степень n (на Assemblerе в С++)

Вставка asm, адрес члена локального объекта
TLongInteger &amp; TLongInteger:: operator + (const TLongInteger &amp;Additional) { TLongInteger Result; asm { } return...

c++ и ASM
помогите найти ошибку #pragma once #include &lt;stdlib.h&gt; #include &lt;iostream&gt; class bbyte { private: void...


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

Или воспользуйтесь поиском по форуму:
44
Ответ Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru