uStick
Цитата:
Собственно, давайте-ка посоревнуемся в написании минимального прЫложения под Маст
|
Давайте

. Оптимизация - это моё

. Тока неизвестно в чем тут соревноваться - мин. размер файла формата PE = 1024 байт.
Цитата статья с msdn.microsoft.com:
The file alignment of sections in the executable file can have a significant impact on the resulting file size. In Visual Studio 6.0, the linker defaulted to a section alignment of 4KB, unless /OPT:NOWIN98 or the /ALIGN switch was used. The Visual Studio .NET linker, while still defaulting to /OPT:WIN98, determines if the executable is below a certain size and if that is the case uses 0x200-byte alignment.
|
Считаем: 0x200 - это 512 байт, в екзешнике минимум 2 секции (заголовок PE и секция кода) => 2*512=1024.
Оригинал статьи.
Примеры этих "минимальных" приложений:
FAsm 1.52
Код:

format PE GUI 4.0
include 'c:\!Backup =)\e\fasm\include\win32a.inc'
; no section defined - FAsm will automatically create .flat section for both
; code and data, and set entry point at the beginning of this section
invoke MessageBox,0,_message,_caption,MB_ICONEXCLAMATION
invoke ExitProcess,0
_message db '1024 байт,13,'Писано на FAsm''e',0
_caption db 'ЫЫЫыыыыы :D',0
; import data in the same section
data import
library kernel32,'KERNEL32.DLL',\
user32,'USER32.DLL'
import kernel32,\
ExitProcess,'ExitProcess'
import user32,\
MessageBox,'MessageBoxA'
end data
К сожалению на днях погорел мой Seagate, поэтому не имею возможности откомпилить нижеприведенный код, но точно знаю, что его размер будет тоже 1024 байт
MSVC++.NET 2002
Код:

#include "windows.h"
#pragma comment(linker,"/MERGE:.rdata=.text")
#pragma comment(linker,"/FILEALIGN:512 /SECTION:.text,EWRX /IGNORE:4078")
#pragma comment(linker,"/ENTRY:mainnn")
#pragma comment(linker,"/NODEFAULTLIB")
void mainnn(void)
{
MessageBox(0, "1024 байт\nПисано на MSVC++ 2002", "ЫЫЫыыыы :D", MB_ICONEXCLAMATION);
}