Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Элементарный компилятор С/С++

16K
17 февраля 2010 года
asmforce
186 / / 05.01.2010
Здравствуйте! Заранее благодарен всем, кто сможет помочь!:)

Возник вопрос: есть ли (а если есть, то какой) компилятор для С или С++, который рождает бинарный файл без хеадеров и прочего - непосредственно МАШИННЫЙ КОД!

Т.е. он должен работать подобно NASM - там можно *.asm скомпилить, в машинный код, записать в загрузочную область и запускать (без ОСи разумеется)!
252
18 февраля 2010 года
koderAlex
1.4K / / 07.09.2005
"...непосредственно МАШИННЫЙ КОД!" - что бы это значило ? :)
экзешник созданный С/С++ компилятором оказывается не машинный код ! - как же я ошибался . ))
7
18 февраля 2010 года
@pixo $oft
3.4K / / 20.09.2006
Попробую развить телепатию…
ТС,видимо,имел создание .com-файлов(априори "который рождает бинарный файл без хеадеров и прочего").Вот только боюсь,для C/C++ такое вряд ли возможно.Для асма–да,есть(например,у ML есть ключ,отвечающий за генерацию .com-файла–разумеется,при соответствующем написании кода программы)
1
18 февраля 2010 года
kot_
7.3K / / 20.01.2000
Цитата: @pixo $oft
Попробую развить телепатию…
ТС,видимо,имел создание .com-файлов(априори "который рождает бинарный файл без хеадеров и прочего").Вот только боюсь,для C/C++ такое вряд ли возможно.


Не бойся :) возможно. Грубо говоря, за то каким будет файл - dll, exe, com - отвечает линкер (linker). По этому в общем случае не важно, какой язык используется - я имею ввиду среди asm/C/C++ - создать com-файл это не помешает. Другое дело, что к данному типу файлов особые требования.

16K
18 февраля 2010 года
asmforce
186 / / 05.01.2010
Цитата: koderAlex
"...непосредственно МАШИННЫЙ КОД!" - что бы это значило ? :)
экзешник созданный С/С++ компилятором оказывается не машинный код ! - как же я ошибался . ))



В том то и дело, что нет! Exe, dll - происки конкретной оси! Exe = Машинный код + хеадер + функции динамической линковки!

В общем вопрос не получил ответа, который ожидался, т.к. никто так не делает! Но я уже нашел другое решение, что компоновка скомпиленого С/С++ (например в *.elf), например, с ассемблером дает потом(после статической линковки) то самое, что требуется для ОСеписания!

245
19 февраля 2010 года
~ArchimeD~
1.4K / / 24.07.2006
Цитата: asmforce

В общем вопрос не получил ответа, который ожидался, т.к. никто так не делает! Но я уже нашел другое решение, что компоновка скомпиленого С/С++ (например в *.elf), например, с ассемблером дает потом(после статической линковки) то самое, что требуется для ОСеписания!



Дорогой друк, не надо так категорично писать хрень. Для начала определись с формулировками.
ld имеет ключ --oformat=binary, с помощью которого лехко создастся бинарный файл с непосредственно машинными инструкциями.

16K
19 февраля 2010 года
asmforce
186 / / 05.01.2010
Цитата: ~ArchimeD~
Дорогой друк, не надо так категорично писать хрень. Для начала определись с формулировками.
ld имеет ключ --oformat=binary, с помощью которого лехко создастся бинарный файл с непосредственно машинными инструкциями.



Воот! Ну поему сразу так нельзя было? Спасибо вам! А то надоело этих критиканов слушать! Мало кто дельное что напишет! Я бы на месте модератора удалял бы все сообщения, которые не отвечают и не уточняют, а так...комментируют!

18K
19 февраля 2010 года
logree
102 / / 27.09.2008
Ну и я свои 3 копейки вставлю :)
ТС попробуйте Borland Turbo C++ 3.11 он генерирует замечательные com файлы, см опции компиляции -tXX :D
307
23 февраля 2010 года
Artem_3A
863 / / 11.04.2008
Цитата: asmforce
Exe, dll - происки конкретной оси!



твою мать!!!0_о оси захватили мир!!!0_0 заговор, заговор!!!

Цитата: asmforce
Воот! Ну поему сразу так нельзя было? Спасибо вам! А то надоело этих критиканов слушать! Мало кто дельное что напишет! Я бы на месте модератора удалял бы все сообщения, которые не отвечают и не уточняют, а так...комментируют!



а нельзя было просто взять мануал по ассемблеру(FASM, NASM, TASM) и почитать? было бы быстрее чем задавать вопросы или ты не хочешь искать ответы на свои вопросы и разбираться в проблеме, а просто ждешь, что тебе разжуют, расставят все по полочкам и предложат последовательность действий куда тыкать мышой и чего нажать на этой большой с кнопками, как ее там, клаве, для получения требуемого результата?!

ЗЫ: читай программирование микроконтроллеров на миниСи, там тебя должно интересовать как через avr-gcc получить хекс(то бишь чистый набор машинных команд) для прошивки контролера. возможно это тебе поможет, если не то, извиняйте, я в молодости не поддался бредовым идеям по заполонению мира своей бредовой ос, по сему в теме на поверхности.

16K
24 февраля 2010 года
asmforce
186 / / 05.01.2010
Я не из тех, кто приходит на форум, чтобы его научили! Почти все знания приобретаю из книг. Но прежде чем начать поглощать очередную, хотел получить совет от тех, кто уже это прошел ))

В классических книгах по асм-компилерам нет той самой любопытной информации, что я ищу, зато есть подробное описание самого асма и компилера, как таковых. ВообСЧето я расcчитывал на С со вставками асм, а тут надо эдакое такое:

Код:
inline static unsigned char inportb (unsigned short _port)
{
   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));
}


Ну и в таком-же духе.

Создание ОС - тема специфическая! Такое же и отношение. Ответы в теме - наилучшее тому подтверждение. Именно потому, прежде чем что-то читать и вникать, необходимо с этим "чем-то" определиться.
Я прав?
307
24 февраля 2010 года
Artem_3A
863 / / 11.04.2008
Цитата: asmforce
Я не из тех, кто приходит на форум, чтобы его научили! Почти все знания приобретаю из книг.



чего то вообще ни разу не заметно.

Цитата: asmforce

В классических книгах по асм-компилерам нет той самой любопытной информации, что я ищу, зато есть подробное описание самого асма и компилера, как таковых.



по твоему ключи компиляции(ассемблирования) это любопытная информация???0_о а мне как то казалось, что это элементарная и основная вещь. как можно что то делать не владея при этом инструментом? это все равно, что пытаться молотком вдавить гвоздь, вместо того, что бы забить!!!
и какие же это книги классические? Асм для чайников? читать нужно мануалы, к примеру(Linux):

 
Код:
man nasm



Цитата: asmforce

Создание ОС - тема специфическая! Такое же и отношение. Ответы в теме - наилучшее тому подтверждение. Именно потому, прежде чем что-то читать и вникать, необходимо с этим "чем-то" определиться.
Я прав?



прежде чем писать мего Ось для начала надо знать, что есть ось и с чем ее можно съесть! как только ты поймешь, что ты писать собрался, тогда ты поймешь чего тебе и изучать надо. это равносильно как - "я хочу построить здание, чего мне изучать как газоны поливать или как кирпичи класть? да, интересно, а как мне учиться кирпичи класть слева на право или справа на лево?".=\

252
24 февраля 2010 года
koderAlex
1.4K / / 07.09.2005
Цитата: asmforce
...
В классических книгах по асм-компилерам нет той самой любопытной информации, что я ищу, зато есть подробное описание самого асма и компилера, как таковых. ВообСЧето я расcчитывал на С со вставками асм, а тут надо эдакое такое:
 
Код:
inline static unsigned char inportb (unsigned short _port)
{
   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 заносить .

16K
25 февраля 2010 года
asmforce
186 / / 05.01.2010
Цитата: koderAlex
и что тут тебе не нравится ? это и есть С со вставкой асма )

зы:вообще-то приведённые функции не универсальны . номер порта надо в регистр dx заносить .



Тут как раз все и нравится. Но это лишь начало. Благо, я знаю, что так можно. А сколько я не знаю...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог