Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Получение COM файла


Автор: Rickert 10.10.2007, 18:09
VS допустим.
Есть простая консольная прога типа hello world.
Можно ли получить com файл (по ути - голый набор машинных кодов) с помощью vs? И если да - то как?

Автор: Daevaorn 10.10.2007, 18:15
http://en.wikipedia.org/wiki/COM_file
VS компилирует для Win32 и выше.

Автор: Rickert 11.10.2007, 02:09
Значит нельзя, а жаль.

Автор: Daevaorn 11.10.2007, 02:16
Цитата(Rickert @  11.10.2007,  03:09 Найти цитируемый пост)
Значит нельзя, а жаль. 

простой бинарник может выдать gcc и подобные ему.

Автор: Rickert 11.10.2007, 02:54
Daevaorn, сказать честно - я подумывал покапаться в gcc сегодня на эту тему, почему-то меня тоже терзают сомнения - что он сможет. Будем пробовать.

Автор: tdebugger 11.10.2007, 08:36
Самая великолепная среда для создания .COM файлов - утилита debug.exe. И устанавливать ее не нужно - в каждой Винде встроенная...

Автор: MAKCim 11.10.2007, 08:45
Цитата(Rickert @  11.10.2007,  02:54 Найти цитируемый пост)
сказать честно - я подумывал покапаться в gcc сегодня на эту тему, почему-то меня тоже терзают сомнения - что он сможет. Будем пробовать.

Код

/* foo.c */

int foo() {
    return 0;
}

Код

# gcc -c foo.c
# ld -T foo.ld --oformat binary foo.o -o foo

Код

# foo.ld

SECTIONS {
    .text 0 : AT(0) {
        *(.text)
    }
}


Добавлено через 1 минуту и 8 секунд
Цитата(Rickert @  11.10.2007,  02:54 Найти цитируемый пост)
сказать честно - я подумывал покапаться в gcc сегодня на эту тему, почему-то меня тоже терзают сомнения - что он сможет. Будем пробовать.

Код

/* foo.c */

int foo() {
    return 0;
}

Код

# gcc -c foo.c
# ld -T foo.ld --oformat binary foo.o -o foo

Код

# foo.ld

SECTIONS {
    .text 0 : AT(0) {
        *(.text)
    }
}


Автор: Rickert 11.10.2007, 09:01
MAKCim, а пояснить сможешь? Особенно ld файл - кто это?

Автор: MAKCim 11.10.2007, 10:01
Rickert, 
Код

# ld -T foo.ld --oformat binary foo.o -o foo

компоновка объектного файла foo.o в бинарный файл, содержащий машинный код
foo.ld определяет размещение секций объектного файла в выходном файле и их адреса
в данном случае LD находит в foo.o секцию .text (где располагается foo()) и размещает ее по смещению 0 (AT(0)) в выходном файле foo, при этом адрес секции определяется как 0

Автор: Rickert 11.10.2007, 10:08
Спасибо smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)