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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2015, 14:35   #1
Mr_ViK
Форумчанин
 
Регистрация: 12.08.2011
Сообщений: 124
По умолчанию crt_printf задержка

Пытаюсь использовать функцию crt_printf. Она работает, все выводит, но во время исполнения появляется задержка на 30 секунд
Код:
.686
.model flat, stdcall
option casemap : none

include /masm32/include/msvcrt.inc
includelib /masm32/lib/msvcrt.lib

.data
    msg db 'Message',0

.code
start:
    invoke crt_printf, ADDR msg
        
    xor eax, eax
    ret
end start
В логе SASM:
Код:
[21:31:05] Построение начато...
[21:31:05] Программа построена успешно.
[21:31:05] Программа выполняется...
[21:31:35] Программа выполнена успешно. Время выполнения: 30.022 с
masm32 качал с офф сайта
Mr_ViK вне форума Ответить с цитированием
Старый 23.09.2015, 14:38   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

cinvoke надо делать для нее.
у вас ret идет не туда, ибо вы стек не вернули после cdecl-процедуры.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.09.2015, 14:57   #3
Mr_ViK
Форумчанин
 
Регистрация: 12.08.2011
Сообщений: 124
По умолчанию

на cinvoke ругается, пишет что такой функции нет
добавил после invoke
Код:
pop eax
вылетела с ошибкой

Последний раз редактировалось Mr_ViK; 23.09.2015 в 15:07.
Mr_ViK вне форума Ответить с цитированием
Старый 23.09.2015, 16:14   #4
Mr_ViK
Форумчанин
 
Регистрация: 12.08.2011
Сообщений: 124
По умолчанию

Проверил в IDA: invoke автоматически добавил
Код:
add esp,4
Может проблема в библиотеке?
Там же в IDA прогонял в отладчике, никакой задержки нет
Mr_ViK вне форума Ответить с цитированием
Старый 23.09.2015, 18:17   #5
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

..а как по-мне, то это вообще внешняя функция, и исполняемый файл сам её подгружает в виде инклуд. Поэтому она и грузится долго...

К примеру, в ядре хрюши её вообще нет. Все функции, которые висят в памяти ХР, реагируют на вызов сразу. ИМХО..
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 25.09.2015, 02:14   #6
Mr_ViK
Форумчанин
 
Регистрация: 12.08.2011
Сообщений: 124
Хорошо

Решил проблему, дописав в конец
Код:
invoke ExitProcess, 0
Не знаю почему обычный ret нормально срабатывать не хочет
Mr_ViK вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задержка EXMP Visual C++ 4 19.05.2012 11:21
Задержка revanatar Общие вопросы C/C++ 3 30.10.2011 17:42
Задержка в С++ cyberandom Помощь студентам 8 13.12.2010 01:15
задержка beygul Помощь студентам 10 16.05.2010 14:22
Задержка JRcoker Общие вопросы Delphi 11 08.08.2008 00:38