Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на C / C++

Выпуск № 528
от 11.06.2004, 23:00

Администратор:
Имя: Nick.Box
URL: Информационный ресурс
ICQ: 365124
[censored], [censored]
О рассылке:
Задано вопросов: 1699
Отправлено ответов: 3374
Активность: 198.5 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

CrackLab
Статус: Опытный
Общий рейтинг: 139.6
[Подробней >>]
bocha
Статус: Доверительный
Общий рейтинг: 150
[Подробней >>]
www
Статус: Доверительный
Общий рейтинг: 117.27
[Подробней >>]
 
Sedric
Статус: Доверительный
Общий рейтинг: 127.43
[Подробней >>]
Fess
Статус: Доверительный
Общий рейтинг: 119.52
[Подробней >>]
barsik
Статус: Доверительный
Общий рейтинг: 112.74
[Подробней >>]
 
vitya
Статус: Профессиональный
Общий рейтинг: 109.31
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 1683. Здравствуйте, уважаемые эксперты! Большое спасибо эксперту bocha за то, что научил писать в буфер од... (ответов: 2)
Вопрос № 1685. как быстро освоить ассемблер? с чего нужно начать ... (ответов: 6)

Вопросов: 2, ответов: 8


 Вопрос № 1683

Здравствуйте, уважаемые эксперты!
Большое спасибо эксперту bocha за то, что научил писать в буфер одной строчкой strcpy(buf,"x2Fx3Fx21x0Dx0A"); Также благодарю эксперта CrackLab за то, что не поленился, описал три способа. Кстати, третий способ написан с ошибкой, так и не получилось его попробовать (вырезал из приложения ответа эксперта CrackLab): wsprintf(buffer, "%c%c%c%c%c", 0x2F, 0x3F, 0x21, 0x0D, 0x0A); Просьба эксперту – исправить ошибку.
Ну а теперь вопросы:
1) с помощью каких функций: strcpy или wsprintf (может все-таки vsprintf ?) программа будет «быстрее» и «меньше занимать места»? (Они ведь используют разные заголовочные файлы: stdio.h и string.h). Т.е. какая функция предпочтительнее при оптимизации программы?
2) при компиляции программы компилятор выдает кучу Warning’ов (известно, что на них можно «забить») на команды записи в порт outp следующего содержания: Code has no effect. Причем команды чтения из порта inp проходят нормально. Вопрос: почему «код не имеет эффекта»? В чем может быть причина? Как сделать эффективно?
Заранее благодарю всех ответивших!


Приложение:


Вопрос отправлен: 08.06.2004, 17:09
Отправитель: Эдуард

[Следующий вопрос >>] [Список вопросов]

Отвечает CrackLab

Добрый день, Эдуард!
wsprintf - это Windows API функция. При написании программы в Turbo C++ 3.0 замените ее функцией sprintf.
По поводу ответа эксперта bocha,
strcpy(buf,"x2Fx3Fx21x0Dx0A") делает совершенно другие вещи.
Тут в буффер копируется строка "x2Fx3Fx21x0Dx0A". Т.е. при выводе на экран мы так и увидим "x2Fx3Fx21x0Dx0A" а не "/?!"
По поводу памяти и скорости. Функция strcpy быстрее функции sprintf т.к. просто копирует строку из одного места в памяти в другое. Однако в данной ситуации она не применима, и я написал почему. Чтобы решить как сделать лучше - нужно смотреть код программы. Вообще это сильно не повлияет. Вариант с sprintf является более гибким и более красивым. При нечастом использовании он не повлияет на скорость абсолютно. А если такие действия будут проходить у вас тысячи раз в цикле то... ...то у вас нет другого выбора как использовать sprintf =))) Потому что другие мои два варианта требуют статической инициализации на стадии проектирования.

Ответ отправлен: 08.06.2004, 17:42
Отправитель: CrackLab


Отвечает bocha

Приветствую Вас, Эдуард!
strcpy - по идее должна работать быстрее sprintf (не путать с wsprintf, которая не сишная, а апишная, загловок <windows.h>), т.к. работает с фиксированым числом параметров, соответственно не делает лишней (для своей задачи) работы. Но strcpy может только копировать, а sprintf умеет несколько больше, поэтому для какждой задачи выберается свтоя функция.

Ответ отправлен: 08.06.2004, 20:09
Отправитель: bocha


 Вопрос № 1685

как быстро освоить ассемблер?
с чего нужно начать



Вопрос отправлен: 08.06.2004, 22:57
Отправитель: neo

[Следующий вопрос >>] [Список вопросов]

Отвечает www

Добрый день, neo!
Добро пожаловать в рассылку по ассемблеру!
Начинать нужно с написания программ.


Ответ отправлен: 09.06.2004, 19:53
Отправитель: www


Отвечает CrackLab

Доброе время суток, neo!
Ну смотря какой ассемблер вы хотите освоить: для DOS или для Windows. Если для DOS, то читайте "рассылку Калашникова: Ассемблер - это просто!", если для Windows, то идите на сайт www.wasm.ru и там найдете много статей для начинающих по программированию на ассмеблере в Windows.

Ответ отправлен: 08.06.2004, 23:34
Отправитель: CrackLab


Отвечает Sedric

Здравствуйте, neo!
По-моему, злостный оффтопик %))
Во-первых, зачем он вам нужен?
Во-вторых, быстро ассемблер освоить трудновато.
Знания, плохо усвоенные - это кирпич на голову(нафиг не нужен).
Учите медленно и пребудет с вами Дзен

Ответ отправлен: 09.06.2004, 09:32
Отправитель: Sedric


Отвечает Fess

Доброе время суток, neo! Кстати, мог бы пооригинальнее ник придумать... Ну, ладно, не моё дело... Смотря на каком уровне собираешься кодить, если на уровне профи, то быстро не получится. А в принципе, некоторые начинают с Абеля, некоторые с Зубкова (я отношусь именно к ним), некоторые с Калашникова. Ну, это основные авторы. Для программирования под ДОС желательно иметь Ralf Brown's Interrupt List (самый полный список прерываний), который можно скачать с сайта автора, URL не помню, на то есть поисковики. Кодинг под Win32 лучше начинать с туториалов Iczelion'а (если на MASM32 кодить собрался). А вообще начинать нужно с выбора самого Ассемблера (masm, tasm, fasm, nasm, HLA и т.д. и т.п.) Советую обратить внимание на masm, fasm и nasm. Простые, компактные. Я начинал с tasm, но тебе не советую, он сейчас не поддерживается, не развивается, отмирает. Если инглиш не проблема, скачай Art of Assemly Рендала Хайда. Хорошая книга для начинающих. На wasm.ru есть. Мой совет: скачай с wasm.ru, например, пакет MASM32. Прочитай документацию, входящую в пакет (там её уйма!). Это для Windows. Скачай tasm 2.0 для ДОС. Скачай fasm и nasm.


Ответ отправлен: 10.06.2004, 16:19
Отправитель: Fess


Отвечает barsik

Здравствуйте, neo!
S azov :-)


Ответ отправлен: 09.06.2004, 19:34
Отправитель: barsik


Отвечает vitya

Здравствуйте, neo!
Раз уж вопрос задается в рассылке по ц++, значит дело плохо. Для начала - научиться отличать - ЯВУ от не ЯВУ, а там сам глядишь и поймешь.

Ответ отправлен: 09.06.2004, 09:43
Отправитель: vitya



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (21)
C / C++ (13)
Perl (1)
Builder / Delphi (18)
Pascal (22)
Basic / VBA (3)
Java / JavaScript (4)
PHP (14)
Криптография (9)
WinAPI (11)
Радиоэлектроника (9)
Пользователю
Windows 95/98/Me (35)
Windows NT/2000/XP (53)
"Железо" (32)
Поиск информации (15)
Администратору
Windows NT/2000/XP (28)
Linux / Unix (11)
Юристу
Гражданское право (12)
Семейное право (8)
Трудовое право (11)
КоАП (7)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2004 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу


В избранное