Нет-нет, здесь я не имею ввиду какие-то конкретные языки. Просто интересно, почему нельзя просто указать прототип функции и откуда она импортируется. А зачем там собирать coff обьектник, если можно сразу PE. Вобще, больше нравится концепция фасма, когда компилятор и линкер одновременно. Это файлы исходного кода.
Потому что такие компиляторы производят только объектники, а компоновщикам нужна особая структура секции импорта Поэтому и нельзя, как и в прочем в fasm'е при сборке того же coff-объектника. Но в отличии от masm'a, fasm это и ассемблер и компоновщик вместе взятые.
amvoz Ага, только разберись, когда просто параметр, когда *, когда &... А в Паскале как раз всё просто и понятно: если параметр объявлен с var -- реально передаётся его адрес, т.е. вызываемая процедура или функция может изменить значение этого параметра; ну а если var не указан -- то передаётся само значение параметра, и изменить его невозможно. Так что Паскаль проще, Паскаль.
чтобы к примеру скомпоновать с объектным файлом, чей исходник был написан на другом языке программирования, вместо перевода этого исходника для компилятора на котором вы собираете свой проект или в место компоновки obj в dll для последующего использования в своем проекте. Или когда исходный код неизвестен и имеется только obj. Я открывал такой файл и обнаруживал квадратики (т. е. символы не имеющие представления в алфавитах)
Про это уже достаточно толково объяснил CrystalIC. Мне не понятно другое: почему подобные типы не приводятся к друг-к-другу по умолчанию? Почему всегда явно приходится указывать приведение? Я понимаю данную ситуацию применительно к указателям, напр., если укзатель на структуру надо увлчить на один байт, то сначала приводим указатель на труктуру к указателю на байт...и тд.
K10 Порочная концепция. Если б успели поработать на мэйнфреймах, то на своей шкуре почуствовали б всю пользу объектников и библиотек объектных модулей Хотя дельфозные юниты в определённом смысле и являются такими библиотеками, только "высокоуровневыми".
кто-нибудь читал "Вавилон-17" Дилэни? очень интересная концепция языка, который... обьяснить невозможно... Сэмюэль Дилэни - голубой негр, однако книжка отличная...
driver Вот только п... эээ голубых тут еще не хватало... ЗЫ Ваще жжоте товарищи...не успеваю обновлять страницу )))
Лутше учить тот язык который знают немного твои знакомие,или люди которые могут тебе что-то обьяснить если что не понятно, или у тебя есть много книг по нему(Это мое чисто мнение, и я так учил)... А так в принципе как по мне на важно с чего начать, можна и с ассемблера под ДОС он также довольно прост выучить команд 6-7 и мона спокойно делать простые программки, но ток для этого и еще прийдется поучить архитектуру компа... И вопрос начем лутше программировать начинать похож на вопрос: На каком языке лутше ребенка учить разговаривать))) думаю однозначного ответа по поводу языка не будет, но можна сказать так: лутше на том котором знают родители....ведь что за смысл учить детя говорить на китайском ели его родители не знают и не в чем помогут ребенку,не поймут его толком.... Ведь достаточно усвоить один язык как потом будет намного проще и остальные усвоить...ведь главное научиться правильно мыслить в программинге, и понят что компу надо все разжевать и бо он не чего сам придумать не сможет. Создать четкий алгоритм(четкую последовательность действий, соблюдая которые можна прийти к какомуто результату) Ведь вопрос с чего начать... и то что здесь доказывают, врядли понятно тому человеку который задал вопрос, его не очень интересует какой язык лутше если он еще ни одного не знает! так же как и ребенку который не еще умеет говорить.
Попозже. Что-то у меня не получается инциализировать массив. Одни буквы ё выводятся. Глаз, что ли замылился.. Не случилось бы чего с системой или с компилятором... Но если ты имеешь ввиду, что в С инициализация массива громоздче, чем в Паскале, то тут я с тобой соглашусь. Но ничто же не мешает тебе написать функцию для инициализации массива и всегда её использовать. Так примерно: ima_funktsii (сhar * a, char x, char y); Вот и всё. Написал один раз, в какой-нибудь файл её вставил и сиди спокойно, вызывай, когда надо. В нашем случае переменная x будет 67, а переменная y 90... Переменная a при вызове функции будет содержать адрес нулевого элемента массива. То есть если массив объявлен char a [98], то в нашем случае вызов функции будет ima_funktsii (a, 67, 90); Всё, массив заполнен У меня подобных функций для работы со строками полно... Ну как полно- с десяток есть, сам написал. Альтернатива word (для собственных нужд). А то, что Pascal язык более высокого уровня и всё, что отсюда следует, так никто и не спорит. Но я всё равно потом напишу то, что ты просил, мне просто сейчас некогда, но не нравится мне это дело, что у меня одни буквы ё выводятся. А в Pascal, как я помню это дело автоматизировано (конканте... Короче склеивание строк и прочее). Само по себе в этом нет ничего плохого, а это даже хорошо. Только я уже раньше писал- Pascal для учёбы создан. А работать хер знает в каких условиях приходится и на каких машинах. Вот у меня сейчас сбой- ничего, разберусь. А с Pascal бы этот номер не прошёл, хоть систему переустанавливай. Он однажды даёт сбой и хоть стой, хоть падай, у меня по крайней мере так было. Не знаешь, на что грешить. А С как рабочая лошадка потихоньку-помаленьк волокёт себе и волокёт.
Значит, это .dcu - скомпилированные файлы юнитов, которые подключать никуда не нужно, это для "внутреннего" дельфийского пользования. Хотя при желании можно и их заюзать. Ну в делфе вот можно подключать сторонние obj'и, и сама она может генерить obj'и, но lib'ов же там не надо? А как мне статически импортировать функцию из dll, для которой нет lib'а ?
Параметр он всегда просто праметр. Посмотри в объявлении функции, что он из себя представляет. Правда, для этого нужно их различать, небольшие умствеенные усилия прикладывать. Вот утебя функция ima_funktsii (сhar * a) a это просто параметр. Теперь смотрим, что он из себя представляет- указатель на переменную типа сhar. Ну и ставь вместо него при вызове функции адрес этой переменной. И всё.
я придумал ассемблер нового поколения, там есть, например: 2+2 ; результат в eax Если никто не додумался до такого раньше, начну писать компилятор, в образовательных целях...