Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
oll
1 / 1 / 0
Регистрация: 26.04.2012
Сообщений: 56
#1

Передача значения в asm вставку - C++

08.11.2013, 16:24. Просмотров 441. Ответов 2
Метки нет (Все метки)

Есть код:
C++
1
2
3
4
5
6
int d = 7;
    _asm 
    {
      PUSH 1
      PUSH d
    }
Как передать значение переменной d в asm вставку, именно цифру 7(как 1), а не int
Какой тип использовать для этого?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2013, 16:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передача значения в asm вставку (C++):

Передача нескольких пременных в asm - C++
TLongInteger TLongInteger:: operator + (const TLongInteger &Additional) { TLongInteger Result; Result="0"; asm ( ...

пишу программу на С++, и делаю в ней ассемблеровскую вставку. Возможно ли в этой _asm вставке сделать С++ вставку? - C++
Я пишу программу на С++, и делаю в ней ассемблеровскую вставку. Возможно ли в этой _asm вставке сделать С++ вставку? Если да, то как?

Передача значения и передача переменной - C++
объясните мне разницу...и с кодами пожалуйста...думаю передача значений это через ссылки\указатели,а передача переменных-переменных ...

Неверная передача значения - C++
Есть typedef enum {a, b, c, d} my; есть функция void MyF(my x) ее вызов в виде MyF(0); MyF(a); работает нормально А...

Передача значения в функцию - C++
Здравствуйте. Сам только начал изучать C++. В общем,никак не могу передать значение login в функцию. #include <iostream> ...

Передача значения по ссылке - C++
1. Объявите (в отельном заголовочном файле) и реализуйте (в другом файле) процедуры (они не возвращают значений!) согласно варианту. 2....

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
TSed
19 / 19 / 1
Регистрация: 22.01.2013
Сообщений: 76
08.11.2013, 16:57 #2
Запишите переменную в регистр, например EAX
C++
1
2
3
_asm{
    MOV EAX, d
}
далее пользуйтесь значением уже в регистре
0
ssXXss
266 / 188 / 10
Регистрация: 15.01.2011
Сообщений: 681
08.11.2013, 17:21 #3
ну так ты и положил в стек значение d = 7, команде push все равно что запихивать в стек, важен размер операнда - 1, 2, 4 , х64 - 8 байт
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
// x86
   int x = 22222,x2 = 0;
    __int64 x64 = 0xffffffffffffffff, x2x64 = 0;
    char c[] = "33333333",c2 = 0x00;
    _asm
    {
        push x
        push x64// компилятор может ругатся размер операнда 8 байт
        push c
        pop c2   // c2 = 3
        pop x2x64 // x2x64 = 0x00000000ffffffff
        pop x2     // x2 = 22222
    }
можно передавать адреса переменных и дальше работать с их содержанием , синтаксис асм вставок зависит от конкретного компилятора.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2013, 17:21
Привет! Вот еще темы с ответами:

Передача значения по ссылке - C++
Даны два файла: fun.cpp: #include <math.h> double summa(float x, float eps, double& psl, int& k) { double s=0, sl=1/x, psl=0; int...

Передача значения в функцию - C++
Столкнулся с такой вот проблемой : есть функция (func_1) в которую передаются три параметра (два числа и массив) , она делает своё дело ,...

Передача значения переменной по ссылке - C++
Есть событие, которое происходит в методе someMethod, при выполнении которого программа вылетает. Методу someMethod нужно получить...

Передача значения переменной в IplImage - C++
Есть данные в файле с названием изображений которые нужно рассматривать. Данные названия получаю таким образом: std::string file1,file2; ...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru