Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 5.00
polimorf96
9 / 9 / 0
Регистрация: 02.08.2010
Сообщений: 270
#1

Как откомпилировать программу на C++ так, чтобы получить "чистый бинарный файл"? - C++

19.02.2012, 16:19. Просмотров 1653. Ответов 19
Метки нет (Все метки)

возникла такая задача-из кода на C++ получить чистый бинарный файл.
В случае с ассемблером, у NASM-а можно было написать например так:
nasmw -f bin prog.asm
и после компиляции появлялся бинарник prog.bin.
Вот сейчас имеется файл prog.cpp и компилятор bcc32. Prog.exe легко создаётся, а вот как создать бинарный файл-не знаю.
Как можно скомпилировать программу так, чтобы получить бинарный файл?
(или из файла prog.cpp получить prog.asm а потом уже prog.bin)
Спасибо за внимание.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2012, 16:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как откомпилировать программу на C++ так, чтобы получить "чистый бинарный файл"? (C++):

Как сделать, так чтобы i и j можно было вводить самому "i" И "j" в цикле, есть программа - C++
#include <iostream> using namespace std; int main() {int a=0,b=0; int i=0; cout<<"Vvedite i="<<endl; cin>>i; ...

Как сделать так, чтобы scanf в переменную double мог считывать с клавиатуры не только "0,01", но и "0.01" - C++
Помогите!) Не знаю, искал, не нашел, возможно ли вообще. Чтобы и так и так понимал.

Как сделать так, чтобы введенное с клавиатуры слово "helllo" в памяти сохранялось в виде "Hello". - C++
Здравствуйте. Подскажите пожалауйста как сделать чтоб согда я вводу с клавиатуры helllo, в памяти оставалось "Hello". Данные типа...

Как записать структуру в бинарный файл одним "блоком" - C++
Как записать структуру в бинарный файл одним "блоком", если в структуре есть private данные? struct MyStruct{ char Name; ...

Расставить между числами знаки "+" и "-" так, чтобы значение выражение стало равно S - C++
Даны N целых чисел X1, X2, ..., XN. Расставить между ними знаки "+" и "-" так, чтобы значение получившегося выражения было равно заданному...

Нужно сделать так, чтобы при вводе числа, выводило "рублей" или "рубль" - C++
Начал решать задачу и засох на средине, не выходить формулу написать,если не сложно,подскажите) с с++ знаю пока что if,else и swith) //...

19
агерон
268 / 267 / 33
Регистрация: 12.10.2009
Сообщений: 1,063
19.02.2012, 16:41 #2
а зачем тебе бинарник?
0
R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
19.02.2012, 16:45 #3
в gcc можно получить асм файл, если компилить с флагом -S
думаю в bcc32 тоже есть такая фича
1
polimorf96
9 / 9 / 0
Регистрация: 02.08.2010
Сообщений: 270
19.02.2012, 16:52  [ТС] #4
Цитата Сообщение от агерон Посмотреть сообщение
а зачем тебе бинарник?
с помощью Hex-editor-а вписываю бинарник в MBR и смотрю как программы выполняются без ОС.
хочу создать нечто более интересное чем "Hello,world!", а создавать это "нечто интересное" на ассемблере очень утомительно и сложно. Напишу для С++ пару функций (ассемблерных вставок).....
ну думаю что смысл понятен.
я же не могу содержимое exe MBR(нет, конечно,могу, но это работать не будет).

Добавлено через 3 минуты
Цитата Сообщение от R136a1 Посмотреть сообщение
в gcc можно получить асм файл, если компилить с флагом -S
думаю в bcc32 тоже есть такая фича
я посмотрел help к bcc32-кажется, действительно можно получить код на ассемблере из кода на С++, только не разобрался пока как это сделать.
Пишу:
bcc32 cpp.cpp -S
файла cpp.asm нигде не видно, да и ошибок не выдаёт.
0
R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
19.02.2012, 17:06 #5
Цитата Сообщение от polimorf96 Посмотреть сообщение
файла cpp.asm нигде не видно, да и ошибок не выдаёт.
обычно на выходе получается файл с расширением .s , в венде не уверен что так, да и про bcc32 первый раз слышу
0
polimorf96
9 / 9 / 0
Регистрация: 02.08.2010
Сообщений: 270
19.02.2012, 17:29  [ТС] #6
Цитата Сообщение от R136a1 Посмотреть сообщение
обычно на выходе получается файл с расширением .s , в венде не уверен что так, да и про bcc32 первый раз слышу
появляются файлы cpp.exe cpp.obj cpp.tds
причём появляются они как при использовании опции -S так и без неё.
Ладно, у меня есть Virtual Box,Linux и GCC-попробую там получить файл с ассемблером.
0
polimorf96
9 / 9 / 0
Регистрация: 02.08.2010
Сообщений: 270
19.02.2012, 17:36  [ТС] #7
вообще, он пишет что-то про файл cpp.ASM

но этого файла нигде нет
0
Миниатюры
Как откомпилировать программу на C++ так, чтобы получить "чистый бинарный файл"?  
R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
19.02.2012, 17:41 #8
Цитата Сообщение от polimorf96 Посмотреть сообщение
Ладно, у меня есть Virtual Box,Linux и GCC-попробую там получить файл с ассемблером.
на всякий случай:
у GCC на выходе асм AT&T синтаксиса
1
kravam
быдлокодер
1700 / 887 / 45
Регистрация: 04.06.2008
Сообщений: 5,498
19.02.2012, 22:00 #9
Цитата Сообщение от polimorf96 Посмотреть сообщение
с помощью Hex-editor-а вписываю бинарник в MBR и смотрю как программы выполняются без ОС. хочу создать нечто более интересное чем "Hello,world!"
Заинтересовало- так я так понял, ты уже пытался породелать подобный трюк с простым "Hello, word" и у тебя получилось (коль скоро ты переходишь на более сложное), так?
0
polimorf96
9 / 9 / 0
Регистрация: 02.08.2010
Сообщений: 270
19.02.2012, 22:45  [ТС] #10
Цитата Сообщение от kravam Посмотреть сообщение
Заинтересовало- так я так понял, ты уже пытался породелать подобный трюк с простым "Hello, word" и у тебя получилось (коль скоро ты переходишь на более сложное), так?
Верно,я проделал подобный трюк. Только программу Hello world я писал сразу на ассемблере, в NASM-е я создал из кода на ассемблере бинарник. Теперь хочу что-то большее чем привет мир, а что-то большее писать на ассемблере слишком сложно и не нужно-есть же языки высокого уровня.
0
NoMasters
Псевдослучайный
1764 / 1107 / 73
Регистрация: 13.09.2011
Сообщений: 3,143
19.02.2012, 23:04 #11
Плюсы будет очень сложно отучить требовать runtime-библиотек...
0
polimorf96
9 / 9 / 0
Регистрация: 02.08.2010
Сообщений: 270
19.02.2012, 23:08  [ТС] #12
Цитата Сообщение от NoMasters Посмотреть сообщение
Плюсы будет очень сложно отучить требовать runtime-библиотек...
Не смотря на то что в теме я говорил именно С++ я еще не определился с языком, возможно буду использовать С, не думаю что мне нужно будет ООП... хотя...
0
ValeryS
Модератор
6707 / 5116 / 482
Регистрация: 14.02.2011
Сообщений: 17,188
19.02.2012, 23:15 #13
Цитата Сообщение от polimorf96 Посмотреть сообщение
с помощью Hex-editor-а вписываю бинарник в MBR и смотрю как программы выполняются без ОС.
совсем???
А что она делать будет???
для ввода вывода файловых операций хотя бы BIOS нужен
дело в том что программы написанные на С не начинаются с функции Main а начинаются со стартового кода который потом и вызывает Main, а стартовый код у каждого компилятора и операционки свой. Посему если будешь использовать BIOS то лучше всего по моему старый борланд 3.5 а если на прямую с железом портами прерываниями то даже не знаю(может быть тоже он но без библиотек)
1
polimorf96
9 / 9 / 0
Регистрация: 02.08.2010
Сообщений: 270
20.02.2012, 19:00  [ТС] #14
я пользуюсь BIOS прерываниями.(ну в Hello,world! пользовался ими-здесь так же).
Старый borland поищу.
Что она будет делать-пока и не знаю, знаю только что будет писаться на С\С++(учитывая, что я знаю только С\С++ и "с горем пополам" знаю ассемблер, выбор очевиден) и что буду пользоваться вводом-выводом.

Цитата Сообщение от ValeryS Посмотреть сообщение
не начинаются с функции Main а начинаются со стартового кода который потом и вызывает Main
что-то я не понял-в чем тут проблема? Если стартовый код не делает ничего, кроме как запускает функцию main, то, в чём проблема?
0
ValeryS
Модератор
6707 / 5116 / 482
Регистрация: 14.02.2011
Сообщений: 17,188
20.02.2012, 19:48 #15
Цитата Сообщение от polimorf96 Посмотреть сообщение
Если стартовый код не делает ничего, кроме как запускает функцию main,
проблема в том что этот стартовый код привязан к операционке
управлять им высший пилотаж а ты
Цитата Сообщение от polimorf96 Посмотреть сообщение
я знаю только С\С++ и "с горем пополам" знаю ассемблер,
и надо бы знать устройство компа в смысле какой порт за что отвечает и по какому адресу находится например видеопамять
0
20.02.2012, 19:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.02.2012, 19:48
Привет! Вот еще темы с ответами:

Перегрузить операторы "=", "+=" так, чтобы производилось сложение строки и объекта - C++
помогите ,пожалуйста вот задание:Реализовать класс String для работы со строками символов. Перегрузить операторы =, += так, чтобы...

Запись структуры "Ноутбук" в бинарный файл - C++
Добрый вечер! Мужики дайте совет, уже все облазил. Мне дали задание (его часть) - 1. написать функцию, которая читает данные о ноутбуках из...

C2678 бинарный ">>": не найден оператор, принимающий левый операнд типа "std::ostream" - C++
Код: #include <iostream> #include <memory> #include <typeinfo> #include <ctime> #include <windows.h> #include <ostream> ...

бинарный "++": "Counter" не определяет этот оператор или преобразование к типу приемлемо к встроенному - C++
бинарный "++": "Counter" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору #include <iostream> ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru