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

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

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

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

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

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

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TSed
19 / 19 / 1
Регистрация: 22.01.2013
Сообщений: 76
08.11.2013, 16:57     Передача значения в asm вставку #2
Запишите переменную в регистр, например EAX
C++
1
2
3
_asm{
    MOV EAX, d
}
далее пользуйтесь значением уже в регистре
ssXXss
264 / 186 / 10
Регистрация: 15.01.2011
Сообщений: 668
08.11.2013, 17:21     Передача значения в asm вставку #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
    }
можно передавать адреса переменных и дальше работать с их содержанием , синтаксис асм вставок зависит от конкретного компилятора.
Yandex
Объявления
08.11.2013, 17:21     Передача значения в asm вставку
Ответ Создать тему
Опции темы

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