![]() |
|
Модераторы: bsa |
![]()
|
|
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 10 Всего: 33 |
zedx, В gcc так нельзя.
http://www.opennet.ru/docs/RUS/gas/ Добавлено через 6 минут и 32 секунды так вот же! -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| zedx |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 29.11.2007 Репутация: нет Всего: нет |
Как так? Сделать процедуру полностью ассемблерной? И кто такой gcc? |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 10 Всего: 33 |
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| zedx |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 29.11.2007 Репутация: нет Всего: нет |
Borland C++ 6.0 |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
для бормана отдельный раздел
а вообще пиши на msvc2008 |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 10 Всего: 33 |
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| zedx |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 29.11.2007 Репутация: нет Всего: нет |
А вообще, какая разница какой компилятор? Си он и в Африке Си.
Или как поставить вопрос: в каком сишном компиляторе возможно поключить процедуру на чистом асме и как это будет выглядить (код)? Всего-то и надо - объяснить компилятору, что в стек ничего пихать не надо, за него уже всё сделано. В делфях это делалось записью assembler, а как это сделать в Си? |
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
|
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
zedx, в msvc это
__declspec(naked) убирает стандартные пролог и эпилог |
|||
|
||||
| xvr |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Получение функции БЕЗ стандартного стекового фрейма (и вообще без чего то) целиком зависит от используемого компилятора
В MSVC и BCB 6.0 это __declspec( naked ) перед определение функции (см тут) В gcc это #define + asm |
||||||
|
|||||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 10 Всего: 33 |
Про Си вопроса не было! Ты хочешь вставлять ассемблерный код, а это другое! -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| zedx |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 29.11.2007 Репутация: нет Всего: нет |
||||
|
||||
| DiGGeRR |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 10.5.2009 Репутация: нет Всего: нет |
а как же __attribute__((naked))? |
|||
|
||||
| zedx |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 29.11.2007 Репутация: нет Всего: нет |
Простите, что не по теме, но продолжу уже здесь.
Понадобилось мне тот же код перенести и в Linux (компилятор gcc 4.4.1). Правильно ли я сделал объявление и вызов процедуры sub_proc_1:
Просто, пришлось переводить ассемблер из Intel в AT&T и ещё не до конца перевёл и работоспособность проверить не могу, а компилятор вообще никак не возражает даже на отсутствие sub_proc_1, хотя в коде есть call sub_proc_1. Это сообщение отредактировал(а) zedx - 23.3.2010, 00:07 |
|||
|
||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Под define+asm я имел в виду inline вставку asm в место вызова, а не стандартный call. Для нормальной процедуры надо использовать функцию с атрибутом __attribute__((naked)) (как DiGGeRR сказал) и asm вставку внутри нее
|
||||
|
|||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |