Очень долго программировал на MASMе. Теперь вот решил изучить C. Далее двинуться к C++ и закончить на visual C.NET. Обратил внимание на такую особенность. Простейшая программа в EXE формате на C "Hello, world!", хотя и весит почти в 20 раз больше, но выполняется раз в 10 быстрее. Если кто может ответить на этот вопрос - буду признателен. Привожу исходные коды на СИ и масме: C: #include <stdio.h> main() { printf ("Hello, world!\n); } MASM: xyz segment assume cs:xyz main: mov ax,cs mov ds,ax lea dx,mess mov ah,9 int 21h mov ax,4c00h int 21h mess db 'Hello, world!',0ah,0dh,'$' xyz ends end main Сегмент стека не создавал, т.к. он здесь не нужен. Сегмент данных также отсутствует, т.к. данные поместил в сегмент кода.
Alexey_krasikov убил На масме ты пишет под дос, и как следствие выполняется в эмуле, на си пишешь в натив, и как следствие быстрей. Одним словом у тебя каша в голове.
printf - функция, реализованная в crt... она преобразует параметры должным образом и вызывает WinAPI-функции из одной из библиотек (какие-то из kernel32.dll, какие-то из user32.dll), функции этих библиотек в свою очередь либо вызывают функции из ntdll.dll, либо "спускаются в ядро самостоятельно"... вам же не нужно программировать сисколлами, вам нужно программировать с использованием WinAPI-функций... вперед в MSDN... и самое главное: int 21h не нужно использовать)))
Проблема в том, что если я использую в коде какие-то API-функции, то компилятор материться, что не может найти эти библиотеки. И скачать их как-то проблемно.
в чем ваша проблема? такое впечатление, что вы из прошлого к нам прибыли... из времени, когда только Windows 3.11 получала свое распространение... какой компилятор?
да... masm32\lib... более того, установщик сам генерирует эти либ-файлы при установке, чтобы соответствовать вашей ос... если она канеш не младше Windows 2000...
В моем компиле в этой папке ничего нет. и при установке ничего туда не закинулось. а по поводу прошлого... Почти так и есть.. ))