Элементарный компилятор С/С++
Возник вопрос: есть ли (а если есть, то какой) компилятор для С или С++, который рождает бинарный файл без хеадеров и прочего - непосредственно МАШИННЫЙ КОД!
Т.е. он должен работать подобно NASM - там можно *.asm скомпилить, в машинный код, записать в загрузочную область и запускать (без ОСи разумеется)!
экзешник созданный С/С++ компилятором оказывается не машинный код ! - как же я ошибался . ))
ТС,видимо,имел создание .com-файлов(априори "который рождает бинарный файл без хеадеров и прочего").Вот только боюсь,для C/C++ такое вряд ли возможно.Для асма–да,есть(например,у ML есть ключ,отвечающий за генерацию .com-файла–разумеется,при соответствующем написании кода программы)
ТС,видимо,имел создание .com-файлов(априори "который рождает бинарный файл без хеадеров и прочего").Вот только боюсь,для C/C++ такое вряд ли возможно.
Не бойся :) возможно. Грубо говоря, за то каким будет файл - dll, exe, com - отвечает линкер (linker). По этому в общем случае не важно, какой язык используется - я имею ввиду среди asm/C/C++ - создать com-файл это не помешает. Другое дело, что к данному типу файлов особые требования.
экзешник созданный С/С++ компилятором оказывается не машинный код ! - как же я ошибался . ))
В том то и дело, что нет! Exe, dll - происки конкретной оси! Exe = Машинный код + хеадер + функции динамической линковки!
В общем вопрос не получил ответа, который ожидался, т.к. никто так не делает! Но я уже нашел другое решение, что компоновка скомпиленого С/С++ (например в *.elf), например, с ассемблером дает потом(после статической линковки) то самое, что требуется для ОСеписания!
В общем вопрос не получил ответа, который ожидался, т.к. никто так не делает! Но я уже нашел другое решение, что компоновка скомпиленого С/С++ (например в *.elf), например, с ассемблером дает потом(после статической линковки) то самое, что требуется для ОСеписания!
Дорогой друк, не надо так категорично писать хрень. Для начала определись с формулировками.
ld имеет ключ --oformat=binary, с помощью которого лехко создастся бинарный файл с непосредственно машинными инструкциями.
ld имеет ключ --oformat=binary, с помощью которого лехко создастся бинарный файл с непосредственно машинными инструкциями.
Воот! Ну поему сразу так нельзя было? Спасибо вам! А то надоело этих критиканов слушать! Мало кто дельное что напишет! Я бы на месте модератора удалял бы все сообщения, которые не отвечают и не уточняют, а так...комментируют!
ТС попробуйте Borland Turbo C++ 3.11 он генерирует замечательные com файлы, см опции компиляции -tXX :D
твою мать!!!0_о оси захватили мир!!!0_0 заговор, заговор!!!
а нельзя было просто взять мануал по ассемблеру(FASM, NASM, TASM) и почитать? было бы быстрее чем задавать вопросы или ты не хочешь искать ответы на свои вопросы и разбираться в проблеме, а просто ждешь, что тебе разжуют, расставят все по полочкам и предложат последовательность действий куда тыкать мышой и чего нажать на этой большой с кнопками, как ее там, клаве, для получения требуемого результата?!
ЗЫ: читай программирование микроконтроллеров на миниСи, там тебя должно интересовать как через avr-gcc получить хекс(то бишь чистый набор машинных команд) для прошивки контролера. возможно это тебе поможет, если не то, извиняйте, я в молодости не поддался бредовым идеям по заполонению мира своей бредовой ос, по сему в теме на поверхности.
В классических книгах по асм-компилерам нет той самой любопытной информации, что я ищу, зато есть подробное описание самого асма и компилера, как таковых. ВообСЧето я расcчитывал на С со вставками асм, а тут надо эдакое такое:
{
unsigned char rv;
__asm__ __volatile__ ("inb %1, %0" : "=a" (rv) : "dN" (_port));
return rv;
}
inline static void outportb (unsigned short _port, unsigned char _data)
{
__asm__ __volatile__ ("outb %1, %0" : : "dN" (_port), "a" (_data));
}
Ну и в таком-же духе.
Создание ОС - тема специфическая! Такое же и отношение. Ответы в теме - наилучшее тому подтверждение. Именно потому, прежде чем что-то читать и вникать, необходимо с этим "чем-то" определиться.
Я прав?
чего то вообще ни разу не заметно.
В классических книгах по асм-компилерам нет той самой любопытной информации, что я ищу, зато есть подробное описание самого асма и компилера, как таковых.
по твоему ключи компиляции(ассемблирования) это любопытная информация???0_о а мне как то казалось, что это элементарная и основная вещь. как можно что то делать не владея при этом инструментом? это все равно, что пытаться молотком вдавить гвоздь, вместо того, что бы забить!!!
и какие же это книги классические? Асм для чайников? читать нужно мануалы, к примеру(Linux):
Создание ОС - тема специфическая! Такое же и отношение. Ответы в теме - наилучшее тому подтверждение. Именно потому, прежде чем что-то читать и вникать, необходимо с этим "чем-то" определиться.
Я прав?
прежде чем писать мего Ось для начала надо знать, что есть ось и с чем ее можно съесть! как только ты поймешь, что ты писать собрался, тогда ты поймешь чего тебе и изучать надо. это равносильно как - "я хочу построить здание, чего мне изучать как газоны поливать или как кирпичи класть? да, интересно, а как мне учиться кирпичи класть слева на право или справа на лево?".=\
В классических книгах по асм-компилерам нет той самой любопытной информации, что я ищу, зато есть подробное описание самого асма и компилера, как таковых. ВообСЧето я расcчитывал на С со вставками асм, а тут надо эдакое такое:
{
unsigned char rv;
__asm__ __volatile__ ("inb %1, %0" : "=a" (rv) : "dN" (_port));
return rv;
}
inline static void outportb (unsigned short _port, unsigned char _data)
{
__asm__ __volatile__ ("outb %1, %0" : : "dN" (_port), "a" (_data));
}
Ну и в таком-же духе.
Создание ОС - тема специфическая! Такое же и отношение. Ответы в теме - наилучшее тому подтверждение. Именно потому, прежде чем что-то читать и вникать, необходимо с этим "чем-то" определиться.
Я прав?
и что тут тебе не нравится ? это и есть С со вставкой асма )
зы:вообще-то приведённые функции не универсальны . номер порта надо в регистр dx заносить .
зы:вообще-то приведённые функции не универсальны . номер порта надо в регистр dx заносить .
Тут как раз все и нравится. Но это лишь начало. Благо, я знаю, что так можно. А сколько я не знаю...