Jack Doe ( Слушатель ) | |
09 мар 2016 01:50:37 |
ps_ ( Слушатель ) | |
09 мар 2016 01:55:33 |
Цитата: Jack Doe от 08.03.2016 22:50:37
Valery ( Слушатель ) | |
09 мар 2016 04:32:05 |
Цитата: ps_ от 08.03.2016 22:55:33
Lapsha ( Слушатель ) | |
10 мар 2016 11:01:39 |
Цитата: Jack Doe от 08.03.2016 22:50:37
adolfus ( Слушатель ) | |
10 мар 2016 21:43:59 |
Цитата: Lapsha от 10.03.2016 08:01:39
Lapsha ( Слушатель ) | |
10 мар 2016 22:11:30 |
Цитата: adolfus от 10.03.2016 18:43:59
Цитата: Цитата: adolfus от 10.03.2016 04:43:59Пришлось целый Qt разработать, чтобы упаковать окна в С++. И весь смысл Qt состоит в том, чтобы добавить в объектно-ориентированный С++ те объектные штучки, которых там нет изначально -- сигналы и сообщения в юзерспейсе.
Цитата: Цитата: adolfus от 10.03.2016 04:43:59"Объектно-ориентированный" отнюдь не означает "поддерживает объектную парадигму". Скорее наоборот, "Объектно-ориентированный С++" означает, что С++ ее не поддерживает -- он просто где-то как-то около пробегал.
adolfus ( Слушатель ) | |
11 мар 2016 00:17:08 |
Цитата: Lapsha от 10.03.2016 19:11:30
Lapsha ( Слушатель ) | |
11 мар 2016 00:32:06 |
Цитата: adolfus от 10.03.2016 21:17:08
adolfus ( Слушатель ) | |
11 мар 2016 02:14:13 |
Цитата: Lapsha от 10.03.2016 19:11:30
LightElf ( Слушатель ) | |
11 мар 2016 02:31:54 |
Цитата: Lapsha от 10.03.2016 19:11:30
Lapsha ( Слушатель ) | |
11 мар 2016 05:25:34 |
Цитата: LightElf от 10.03.2016 23:31:54
Цитата: Цитата: LightElf от 10.03.2016 09:31:54Насчет же "обертка для ассемблера" - тоже не соглашусь, давно уже принято генерировать напрямую машинный код.
LightElf ( Слушатель ) | |
11 мар 2016 17:47:25 |
Цитата: Lapsha от 11.03.2016 02:25:34
Цитата: ЦитатаЛинковщик уже отменили? А как вообще тогда линкуются вызовы функций, коль скоро все - и сразу в коды?
Lapsha ( Слушатель ) | |
11 мар 2016 21:01:55 |
Цитата: LightElf от 11.03.2016 14:47:25
ps_ ( Слушатель ) | |
11 мар 2016 21:24:02 |
Цитата: Lapsha от 11.03.2016 18:01:55
Lapsha ( Слушатель ) | |
11 мар 2016 22:07:13 |
Цитата: ps_ от 11.03.2016 18:24:02
LightElf ( Слушатель ) | |
12 мар 2016 03:17:20 |
Цитата: Lapsha от 11.03.2016 19:07:13
Цитата: ЦитатаЧто непринципиально, поскольку между ними однозначное соответствие в обе стороны.
LightElf ( Слушатель ) | |
11 мар 2016 22:09:46 |
Цитата: Lapsha от 11.03.2016 18:01:55
Lapsha ( Слушатель ) | |
11 мар 2016 22:26:09 |
Цитата: LightElf от 11.03.2016 19:09:46
LightElf ( Слушатель ) | |
11 мар 2016 23:56:38 |
Цитата: Lapsha от 11.03.2016 19:26:09
Цитата: ЦитатаПро GCC начали Вы, не я.
Приведите пример компилятора С, который генерирует исполняемый файл без объектного кода и линковщика.
Цитата: ЦитатаВозьмите любой машинный код (исполняемые файлы Win, Linux - без разницы), и покажиет мне пальчиком, что там можно линковать.
Цитата: ЦитатаИ повторю уже озвученную ранее просьбу: если объектный файл - машинный код, то запустите его на исполнение.
Lapsha ( Слушатель ) | |
12 мар 2016 00:26:59 |
Цитата: LightElf от 11.03.2016 20:56:38
Цитата: Цитата: LightElf от 11.03.2016 06:56:38tiny C compiler. Который, что характерно, обходится и без объектного кода и без линковщика и без ассемблера. Без единого гвоздя, исключительно с божьей помощью.
Цитата: Цитата: LightElf от 11.03.2016 06:56:38Вы за стул держитесь, я сейчас страшную вещь скажу. Любой исполняемый файл, (что в Windows, что в Linux) необходимо линковать с системными сервисами (в windows это kernel32.dll, в linux - libc.so), а обычно - еще и с кучей других всяких модулей, которые так и называются - динамически линкуемые библиотеки.
Цитата: Цитата: LightElf от 11.03.2016 06:56:38Регулярно беру именно объектный файл и запускаю его на исполнение. Ну есть у меня такой код, который весь в один файл помещается и ничего снаружи не требует.
LightElf ( Слушатель ) | |
12 мар 2016 02:34:53 |
Цитата: Lapsha от 11.03.2016 21:26:59
Цитата: ЦитатаИ что мы там видим?
4. TinyCC Assembler:
http://bellard.org/t…html#SEC10
Цитата: ЦитатаSince version 0.9.16, TinyCC integrates its own assembler. TinyCC assembler supports a gas-like syntax (GNU assembler). You can desactivate assembler support if you want a smaller TinyCC executable (the C compiler does not rely on the assembler).
Цитата: Цитата5. TinyCC Linker:
http://bellard.org/t…html#SEC16
Цитата: ЦитатаTCC can directly output relocatable ELF files (object files), executable ELF files and dynamic ELF libraries without relying on an external linker.
Цитата: ЦитатаПросто TCC не создает физический объектный файл, он его процессит линковщиком в оперативной памяти. В отличие от GCC. Но шаги компилятора все те же.
Цитата: ЦитатаВам, как программеру, следовало бы быть внимательным к мелочам, практически параноидальным буквоедом. Иначе будут проблемы на работе.
Цитата: ЦитатаДругими словами, до сегодняшнего дня Вы не знали о существовании линковщиков у компиляторов.
К системным компоновщикам они отношения не имеют
Цитата: ЦитатаЕсли снаружи ничего не требует - в некоторых специальных случаях будет исполняться.
Цитата: ЦитатаИ то это зависит от компилятора: будет он создавать заголовок для таблицы символов или нет.
Lapsha ( Слушатель ) | |
12 мар 2016 12:04:50 |
Цитата: LightElf от 11.03.2016 23:34:53
Цитата: Цитата: LightElf от 11.03.2016 09:34:53"Дядя, ты дурак?" (С) Прямо первой строчкой:
Цитата: Цитата: LightElf от 11.03.2016 09:34:53Из чего следует, что до версии 0.9.16 ассемблера не было вообще. А после - появился опциональный встроенный транслятор с ассемблера. Отдельно сказано, что самому TinyCC ассемблер как пятая нога зайцу.
Цитата: Цитата: LightElf от 11.03.2016 09:34:53Опять, для не умеющих читать, первая же строчка
Что характерно, речь идет о версии, где появилась возможность сохранять результат компиляции в файл стандартного формата ELF.
Цитата: Цитата: LightElf от 11.03.2016 09:34:53Словоблудие. Не ходит, не крякает и не похожа на утку - но все равно утка.
Бог миловал меня от чистого программерства, к счастью.
Другими словами вы не знали, что выполняемые файлы тоже требуют линковки. Будет ли линковка выполняться системным загрузчиком или отдельной программой - вопрос несущественный. Ничто не мешает готовый exe-шник и готовую dll статически слинковать в один жирный файл.
Ну слава богу, значит в объектном файле таки есть машинный код и вы разрешаете его в некоторых случаях исполнять. Только тихо и чтобы никто не знал.
Спасибо, Кэп. Формат объектного файла сам по себе зависит от компилятора (удивительно, да?), а наличие таблицы символов никак не мешает коду выполняться.
Lapsha ( Слушатель ) | |
15 мар 2016 11:25:26 |
Цитата: LightElf от 11.03.2016 20:56:38
Цитата: Цитата`tcc -o myprog a.c b.c'
Compile `a.c' and `b.c', link them and generate the executable `myprog'.
...
`tcc -c a.c'
Compile `a.c' and generate object file `a.o'.
Цитата: Цитата#include <stdio.h>
int main()
{
printf("Hello World!\n");
return 0;
}
LightElf ( Слушатель ) | |
15 мар 2016 18:39:50 |
Цитата: Lapsha от 15.03.2016 08:25:26
Цитата: ЦитатаА сам компилятор С написан на ассемблере. И С есть не что иное, как "обертка" ассемблера. Только еще более абстрагированная от процессорных кодов.
Lapsha ( Слушатель ) | |
15 мар 2016 20:51:12 |
Цитата: LightElf от 15.03.2016 15:39:50
Цитата: Цитата: LightElf от 15.03.2016 02:39:50Можете просто заглянуть в исходник самый древний TCC и убедиться, что там нет ни ассемблера, ни линкера.
Цитата: Цитата: LightElf от 15.03.2016 02:39:50Хотя конечно ссылки на внешние функции (если они есть в программе) приходится разруливать. Можете считать это линковкой.
LightElf ( Слушатель ) | |
16 мар 2016 12:47:16 |
Цитата: Lapsha от 15.03.2016 17:51:12
Lapsha ( Слушатель ) | |
16 мар 2016 19:05:16 |
Цитата: LightElf от 16.03.2016 09:47:16
LightElf ( Слушатель ) | |
11 мар 2016 17:55:09 |
Цитата: Igor_FF от 11.03.2016 09:04:23