|
В данной статье мы попробуем создать простое приложение с использованием среды delphi и проанализируем работу генератора исходного кода программ. delphi, по возможности, старается облегчить работу программиста. Когда вы запускаете среду, автоматически создается форма form1 и модуль unit1. Форма представляет собой стандартное окно windows. Вы можете размещать на ней кнопки, надписи, картинки, видео- и аудио фрагменты, а также многое другое. Весь необходимый для создания заготовки формы код уже написан генератором исходного кода delphi. |
|
Продолжение...
|
|
|
Статья призвана дать понятия о процессах, потоках и принципах программирования многопоточных приложений в delphi. Процесс - экземпляр выполняемого приложения. При запуске приложения происходит выделение памяти под процесс, в часть которой и загружается код программы. Поток - объект внутри процесса, отвечающий за выполнение кода и получающий для этого процессорное время. |
|
Продолжение...
|
|
Если вы хотите узнать сколько виртуальной памяти вам доступно вашей программе или общий объем физической и виртуальной памяти достаточно воспользоваться API функцией GlobalMemoryStatus.
Рассмотрим следующий код. Добавим на форму кнопку (TButton) и многострочный редактор (TMemo). После чего в обработчик кнопки вставляем следующий код. |
|
Продолжение...
|
|
Многие знают, что можно уменьшить размер exe файла, не используя упаковщики и не изменяя функциональность, путём удаления из exe таблицы релокаций. Обычно для этого используют сторонние утилиты. Например StripReloc Джордона Рассела. А теперь я расскажу страшную тайну. В Delphi 2006 и выше, релоки можно не удалять, а просто не создавать! |
|
Продолжение...
|
| |
|
C++Builder 2007Следующие средства были введены впервые или значительно изменены. - MSBuild стала новым движком для компиляции проектов: Теперь при компиляции проекта на С++ MSBuild выполняет весь процесс компиляции (билда). Для этих целей была изменена структура файла проекта, он теперь является XML файлом и содержит все необходимые для MSBuild настройки. Расширение файла проекта изменено на .cbproj. Это позволяет производить компиляцию из командной строки используя синтаксис командной строки MSBuild.
- Изменен порядок билда: MSBuild производит компиляцию файлов в соответствии с типом файла (расширением), вместо старого порядка, который определялся временем последнего изменения файла. Порядок таков Delphi .pas, C/C++ .c .cpp, Ассемблер .asm, затем ресурсы .rc. Внутри каждой папки или виртуальной папки, файлы компилируются в порядке соответствующем их типу.
|
|
Продолжение...
|
|
|
Довелось мне как-то озадачиться идеей написать редактор карт для моей новой игры. Скажу сразу, что задача эта не из простых. Приступим сразу к делу. Как правило, в двумерных стратегических играх типа Warcraft, Heroes of Might and Magic, Z и т. д. карты строятся из ячеек. Иными словами, карта - это матрица с некоторыми числовыми значениями внутри ячеек. Эти значения есть номера текстур( растровых картинок с изображениями земли, воды, камней и т. д., из которых и будет склеиваться Ваш уникальный ландшафт ) |
|
Продолжение...
|
|
|
Если вы решили перепробовать ВСЕ номера игры FreeCell, вас можно квалифицировать как законченного маньяка. В этом случае вас, возможно, заинтересует эта маленькая программка. При ее запуске она загружает FreeCell и начинает игру, следующую за той, которую вы не смогли завершить в прошлый раз. А еще она отвечает на глупые вопросы типа "Do you really want to resign the game?". После выигрыша программа изменяет счетчик таким образом, чтобы при очередном запуске номер игры изменялся на следующий автоматически. |
|
Продолжение...
|
|
|
Введение.
Несмотря на все более широкое распространение языков программирования высокого уровня и интегрированных средств программирования, оптимизация программ на ассемблере остается актуальной темой дискуссий программистов. Можно упомянуть, например, форум программистов, проведенный сетью PC MagNET, который стал ареной многочисленных "дуэлей": то один, то другой участник предлагал всем желающим решить небольшую, но интересную задачу программирования - и рассматривал присылаемые решения, ожидая, кто-же и как решит задачу наименьшей кровью, т.е. затратив минимум байтов на программу. Подобно этому проведенная сетью BIX конференция по языку ассемблера для процессоров 80x86 и 80x88 стала трибуной немалого числа основательных рассуждений по поводу неочевидных аспектов оптимизации ассемблерных программ. Несмотря на самый общий и широкий интерес к проблеме, литература по оптимизации ассемблерных программ для процессоров 80x86 и 80x88 на удивление скудна. В 1989 году, готовясь к докладу на эту тему для конференции по развитию программного обеспечения, я просмотрел оглавления всех основных журналов по программированию и обнаружил лишь горстку статей на эту тему. С другой стороны, литература по оптимизации программ для компиляторов высокого уровня весьма обширна, и многие концепции, развитые в ней, будут полезны и при программировании на языке ассемблера. Так что говорить, что литературы совсем нет, было бы несправедливо. Ниже мы сначала рассмотрим общие методики оптимизации, а затем обсудим более серьезный вопрос - когда и что что стоит оптимизировать. В этом документе будут обсуждаться некоторые общие вопросы и концепции оптимизации. Будет разговор и компромиссах, на которые приходится идти оптимизируя быстродействие и размер программы. Будут рассмотрены конкретные методы, относящиеся к переходам и вызовам подпрограмм, а также метод отказа от универсальности. Ниже мы подробнее рассмотрим некоторые классические образцы "локальной" оптимизации. В том числе: оптимизацию циклов, применение таблиц управляющих параметров, а также об ориентированных на конкретные модели процессоров командах. Но важно помнить, что эти частные методики следует использовать только при определенных обстоятельствах - а именно: после того, как вы убедитесь, что применили правильные алгоритмы и структуры данных, что полностью отладили программу и что средства профилирования показали вам те самые фрагменты программы, которые ограничивают производительность. Стоит еще раз повторить мудрое изречение доктора Кнута: "Многие беды программирования проистекают от преждевременной оптимизации".
¦ Чтобы ваши программы на ассемблере принесли максимум пользы, ¦ иногда стоит оптимизировать размер, иногда - быстродействие, ¦ а иногда - лучше оставить все как было.
|
|
Продолжение...
|
|
|