Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Операционные системы > Софт
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2009, 13:49   #1
heart
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 64
По умолчанию Дизассемблированная прога на с++

Цитата:
int main()
{
test();
test2();
printf("*P=%d",*p);
scanf("%");
return(0);
}
Код:
push    ebp
mov     ebp, esp
sub     esp, 18h
and     esp, 0FFFFFFF0h
mov     eax, 0
add     eax, 0Fh                      - не поймму смысл этих операций
add     eax, 0Fh
shr     eax, 4
shl     eax, 4

mov     [ebp+var_4], eax   -- Как я понял эти две строчки не нужны.
mov     eax, [ebp+var_4]   --
call    ___chkstk               -- искал в гугле что за функция, одна вода, подскажите.
call    ___main                 -- не понял фишки, функция main вызывает сама себя, потом поглядел, однако, это не функция main, а чего тогда ida мне нарисовала такое название?
call    sub_401390             --test();
call    sub_4013A8             --test2();
mov     eax, ds:dword_443010
mov     eax, [eax]
mov     [esp+18h+var_14], eax
mov     [esp+18h+var_18], offset aPD ; "*P=%d"
call    printf
mov     [esp+18h+var_18], offset asc_440006 ; "%"
call    scanf
mov     eax, 0
leave
retn
_main endp
heart вне форума Ответить с цитированием
Старый 11.11.2009, 14:03   #2
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

ассемблерный код у компилятора спроси, может пояснения вставит
что за компилятор?
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Старый 11.11.2009, 14:07   #3
heart
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 64
По умолчанию

не имеет значения какой компиль, я хочу узнать, смысл команд вставленных им, каких-я пометил.
По мне так в идеале все должно быть так:

Код:
push    ebp
mov     ebp, esp
sub     esp, 18h
call    sub_401390             --test();
call    sub_4013A8             --test2();
mov     eax, ds:dword_443010
mov     eax, [eax]
mov     [esp+18h+var_14], eax
mov     [esp+18h+var_18], offset aPD ; "*P=%d"
call    printf
mov     [esp+18h+var_18], offset asc_440006 ; "%"
call    scanf
mov     eax, 0
leave
retn

Последний раз редактировалось heart; 11.11.2009 в 14:11.
heart вне форума Ответить с цитированием
Старый 11.11.2009, 14:19   #4
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Можете успокоиться - смысла нет
Или это такой замысловатый способ получить 16 в аккумуляторе.
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4

Последний раз редактировалось Goodwin98; 11.11.2009 в 14:21.
Goodwin98 вне форума Ответить с цитированием
Старый 11.11.2009, 14:36   #5
heart
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 64
По умолчанию

Раскажете кто-нибудь, мне очень важно знать. Компилятор ошибся вставив выделенные строки или нет? На счет функций, думаю не ошибся, хотя бы про функции раскажите.
heart вне форума Ответить с цитированием
Старый 11.11.2009, 15:28   #6
Виталий Серов
Заснувший
Форумчанин
 
Регистрация: 13.03.2009
Сообщений: 213
По умолчанию

Цитата:
мне очень важно знать
Если вам это так важно, то огласите название компилятора, а ещё лучше дайте посмотреть на exe, и полный исходный код с описанием всех функций...
Откуда форумчанам знать что там пишет ваш компилятор, может эти строки вы сами приписали...
Виталий Серов вне форума Ответить с цитированием
Старый 11.11.2009, 15:43   #7
NSvirus
пропагандирую жизЪ
Форумчанин
 
Аватар для NSvirus
 
Регистрация: 19.03.2007
Сообщений: 950
По умолчанию

компилятор никогда не ошибается, ошибается разработчик
Посторонним В.
NSvirus вне форума Ответить с цитированием
Старый 11.11.2009, 15:45   #8
heart
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 64
По умолчанию

Цитата:
Сообщение от NSvirus Посмотреть сообщение
компилятор никогда не ошибается, ошибается разработчик
я где нить упомянул, что он ошибся? прога норм работает!!! мне просто интересно узнать!(кста могу привести примеры ошибок компилятора )

вы мне скажите зачем вам версия компилятора? Так забудте про код на си. Смотрите на асм - код я подчеркнул там строки, зачем они там? я недавно их все занопил и работает также.

Последний раз редактировалось heart; 11.11.2009 в 15:48.
heart вне форума Ответить с цитированием
Старый 11.11.2009, 16:32   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
heart
Иногда разработчики компиляторов заставляют их писать в прогу некую отличительную сигнатуру. по которой однозначно можно определить на чем компилилось, якобы для выявления прог, скомпилиных на нелецензионном компиляторе... Но разработчики помоему погорячились с этой идеей ), А мусор остался, им PEId пользуется для определения на чем прога была написана.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.11.2009, 17:17   #10
heart
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 64
По умолчанию

о_О хоть один знающий, спасибо за разьяснения.
heart вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
прога на Си blackbanny Помощь студентам 3 02.11.2009 10:00
прога @RH@nhel Помощь студентам 1 20.06.2009 22:44
прога по с++ glasian Фриланс 1 04.06.2009 08:51
прога и чюжая прога benjaminfran Общие вопросы Delphi 5 28.03.2008 15:07
Прога на с# rojer Помощь студентам 6 22.05.2007 22:37