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

C++ И ASM - C++

Восстановить пароль Регистрация
 
Fusix
0 / 0 / 0
Регистрация: 08.10.2010
Сообщений: 133
19.02.2012, 13:07     C++ И ASM #1
Всем привет. Мне нужно создать функцию на С++, но особенную.
Мне нужно, чтобы она была пустая, при void Func(){}, компилятор уже добавляет туда
Assembler
1
2
3
4
5
6
PUSH EBP
MOV EBP,ESP
PUSH ECX
PUSH EBX
PUSH ESI
PUSH EDI
И все такое. Мне нужна пустая функция. Как это сделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2012, 13:07     C++ И ASM
Посмотрите здесь:

C++ c++ и ASM
Asm + C++ C++
asm вставка в C++ C++
C++ и ASM C++
C++ Прерывания asm
C++ Интерпретатор(asm)
asm в VS C++
c++ asm C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nxnx
Формучанин
361 / 292 / 16
Регистрация: 02.11.2010
Сообщений: 1,226
23.02.2012, 20:34     C++ И ASM #2
* Пропатчить gcc, чтобы он поддерживал naked функции, и для функции Func использовать атрибут naked.
только функция как минимум будет содержать инструкцию ret (naked заставляет убирать пролог и эпилог)
и компилятор скорее всего будет сохранять базовые регистры.(гугл в помощь)

* Попробовать использовать оптимизацию -O3 -оно также может убрать пролог\эпилог в некоторых случаях, но это плохой способ.

* Написать функцию полностью на ассемблере. например так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
extern "C" int Func();//возвращает число 13
 
asm("Func: \n"
"movl $13,%eax\n"
"ret\n"
 
);
 
int main()
{
    std::cout<<Func()<<"\n";
    return 0;
}
http://liveworkspace.org/code/9ca1eb...674e0ac359c59f
Yandex
Объявления
23.02.2012, 20:34     C++ И ASM
Ответ Создать тему
Опции темы

Текущее время: 20:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru