Member
Статус: Не в сети Регистрация: 27.12.2011 Откуда: Краснодар
Industrialice А на C++ можно консольные приложения создавать? Только так чтоб в итоге был только один исполняемый файл с возможностью запуска на любом компьютере.
Member
Статус: Не в сети Регистрация: 12.09.2010 Откуда: Калининград
silent_assassin писал(а):
А на C++ можно консольные приложения создавать? Только так чтоб в итоге был только один исполняемый файл с возможностью запуска на любом компьютере
Для этого нужно включить статическую линковку CRT( для вс2010 Свойства конфигурации -> С/С++ -> Создание кода -> Библиотека времени выполнения, выбрать вариант без DLL ) и не юзать никаких специфичных библиотек. Для компьютеров с разными ОС нужна перекомпиляция, но не более если не юзать ничего за пределами ANSI C++( который включает в себя достаточно функций для работы с консолью, которые и реализуются этой самой CRT )
Member
Статус: Не в сети Регистрация: 15.02.2009 Откуда: Лангепас
Industrialice писал(а):
Char88 писал(а): А что написала? У меня просто нету под рукой проверить.
2010
Думал только я в универе на асме быдлокод писал. Оказывается мелоксофт тоже умеет быдлокодить. Полчаса въезжал в асм, всё же въехал. Можно было всё енто нарисовать на асме в 5 строк. Думаю icc так и рисует в 4-5 строк.
Member
Статус: Не в сети Регистрация: 12.09.2010 Откуда: Калининград
oxy писал(а):
Можно было всё енто нарисовать на асме в 5 строк. Думаю icc так и рисует в 4-5 строк
GCC делает всё отлично - у меня только к 1 инструкции вопросы ICC делает даже хуже VC++, используя условные ветвления для проверок - по мне так это уже полный бред, неправильный переход по ветвлению будет стоить очень дорого, к тому же это наглое игнорирование побитового оператора( код при использовании | генерируется 1 в 1 как при использовании || )
ICC 2011 или как там правильно - не самый новый
Код:
call ds:__imp__rand cmp eax, 2 jz short loc_401034 test eax, eax jnz short loc_401038
loc_401038: mov eax, 1
loc_40103D: push eax push offset Format ; "%d\n" call ds:__imp__printf
///////////////
loc_401034: xor eax, eax jmp short loc_40103D
Как-то так если представить в виде плоского листинга, loc_401034 доступно только через прыжок, остальные идут линейно в коде
Вопрос по дебагу в эклипсе. Есть аппликуха, есть дамп при падении (.core) и символы (.sym). При дебаге дампа из-за разницы в сорцах (на моей машине и на той, что строили билд для тестирования) стек-трейс не корректен, видимо нужно к дебагу подцепить еще и символы. как это сделать?
Member
Статус: Не в сети Регистрация: 12.09.2010 Откуда: Калининград
oxy писал(а):
Думал только я в универе на асме быдлокод писал. Оказывается мелоксофт тоже умеет быдлокодить
У меня появился ещё повод кинуть большой камень в этот огород. Сейчас переписываю на Асме рендерер для своего 3д-движка. Закончил функцию которая рисует 2д-прямоугольник( используется GUI ). Вариант главной части функции от VS2010
Код:
mov ecx, [ebp+arg_4] mov edi, [ebp+arg_0] add ecx, esi mov esi, p_Lock mov edx, [ebp+arg_8] mov word ptr [esp+28h+var_10+2], cx mov [esp+28h+var_14], ecx mov word ptr [esp+28h+var_10], di mov ebx, [esp+28h+var_10] mov ecx, eax shl ecx, 4 mov [ecx+esi], ebx mov ebx, [esp+28h+var_C] mov [ecx+esi+4], ebx mov ebx, [esp+28h+var_8] mov [ecx+esi+8], ebx add ecx, esi mov [ecx+0Ch], edx mov cx, word ptr [ebp+arg_4] mov word ptr [esp+28h+var_10+2], cx mov word ptr [esp+28h+var_10], di mov ebx, [esp+28h+var_10] add edi, [esp+28h+var_18] lea ecx, [eax+1] shl ecx, 4 mov [ecx+esi], ebx mov ebx, [esp+28h+var_C] mov [ecx+esi+4], ebx mov ebx, [esp+28h+var_8] add ecx, esi mov [ecx+8], ebx mov [ecx+0Ch], edx mov cx, word ptr [ebp+arg_4] mov word ptr [esp+28h+var_10+2], cx lea ecx, [eax+2] shl ecx, 4 add ecx, esi mov word ptr [esp+28h+var_10], di mov ebx, [esp+28h+var_10] mov [ecx], ebx mov ebx, [esp+28h+var_C] mov [ecx+4], ebx mov ebx, [esp+28h+var_8] mov [ecx+8], ebx mov [ecx+0Ch], edx movzx ecx, word ptr [esp+28h+var_14] mov word ptr [esp+28h+var_10+2], cx lea ecx, [eax+3] shl ecx, 4 add ecx, esi mov word ptr [esp+28h+var_10], di mov esi, [esp+28h+var_10] mov [ecx], esi mov esi, [esp+28h+var_C] mov [ecx+4], esi mov esi, [esp+28h+var_8] pop edi mov [ecx+8], esi add eax, 4 pop esi mov [ecx+0Ch], edx mov VBufferSize, eax pop ebx mov esp, ebp pop ebp retn 0Ch
Работает совершенно одинаково - как и задумано, на Intel Celeron 1.7 GHz @ 2.15 на ядре Willamette первый вариант при куче интерфейса даёт 593 фпс, второй вариант 640 фпс. Посмотрим что там будет когда я более часто вызываемые функции перепишу
Member
Статус: Не в сети Регистрация: 31.05.2010 Откуда: Минск Фото: 4
Одна из лабораторных задач : "// №10. Найти все меньшие N числа-палиндромы, // которые при возведении в квадрат дают // палиндром. Число называется палиндромом, // если его запись читается одинаково с начала и с конца." Я её написал, но на числах с количеством знаков больше семи она таак неспеееешно их ищет. Десятизнак уже минут десять считает Можно как-нибудь ускорить работу программы. Вот мой код :
Код:
#include <iostream> #include <math.h> typedef unsigned int UINT; UINT x, y, i; using namespace std;
Member
Статус: Не в сети Регистрация: 12.09.2010 Откуда: Калининград
zanac то ли я задание не понял, то ли прога работает неправильно. Также возможно и то и другое Пользователь вводит число. Допустим 1000. Все целые положительные числа которые меньше этого числа и являющиеся палиндромами, при возведении которых в квадрат также получается палиндром, вывести на экран - так?
Member
Статус: Не в сети Регистрация: 31.05.2010 Откуда: Минск Фото: 4
Industrialice , да.
Добавлено спустя 6 часов 55 минут 28 секунд: Industrialice, прога вроде нормально работает, есть один баг - она числа от 1 до 9 не признает за палиндромы, но это мелочь. Ответ на твой вопрос - ты все правильно понял.
Member
Статус: Не в сети Регистрация: 12.09.2010 Откуда: Калининград
zanac я бы поглядел повнимательнее, но задачка уж больно скучна. Вы учтите что деление - адски дорогая операция если компилятор не может его оптимизировать( вряд ли деление на 10 он оптимизирует как-либо ), хотите скорость - уменьшайте их количество. Приблизительные цифры: +/- стоят 0.25 такта, целочисленное деление 40-80 тактов процессора. Будет разница в зависимости от ЦП, но ситуация не изменится. На большинстве ЦП с архитектурой АРМ деление аппаратно не поддерживается вообще и там все будет куда хуже. Вобщем стоит учиться обходиться без него
Member
Статус: Не в сети Регистрация: 14.02.2011 Откуда: Kaliningrad Фото: 32
Хочу с полного 0ля начать изучать С++. 1) Реально ли это осились самому в домашних условиях ? 2) Хотелось бы найти дельные учебники, и тех кто сможет в этом помочь !
Member
Статус: Не в сети Регистрация: 12.09.2010 Откуда: Калининград
Cyborg39rus писал(а):
Реально ли это осились самому в домашних условиях ?
Лучше условий чем дома вы впринципе вряд ли найдёте
Cyborg39rus писал(а):
Хотелось бы найти дельные учебники, и тех кто сможет в этом помочь !
Герберт Шилдт Базовый курс С++, офигенный учебник. Его одного хватит надолго и будет достаточно для многого. Очень важно при этом остерегаться российской литературы, российских форумов по программированию - тогда всё будет ок
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения