Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2022, 18:54   #1
Arthur800
Новичок
Джуниор
 
Регистрация: 31.10.2022
Сообщений: 1
По умолчанию Сборка объектных файлов в бин файл

Здравствуйте, прошу помочь с такой проблемой, не могу слинковать файлы COFF созданные на языках СИ(gcc) и Ассемблер (Fasm) в бинарный файл, собственно коды
файл asm_code.asm
Код:
format COFF
use32

public start
extrn _c_main
section '.text' code
start:
  call _c_main

  cli  ; stop interrupts
  hlt ; halt the CPU
файл c_code.c
Код:
#define WHITE_TXT 0x07

void c_clear_screen();
unsigned int c_printf(char *message, unsigned int line);


c_main()
{
	c_clear_screen();
	c_printf("Hi! \n new line.", 0);
};

void c_clear_screen()
{
	char *vidmem = (char *) 0xb8000;
	unsigned int i=0;
	while(i < (80*25*2))
	{
		vidmem[i]=' ';
		i++;
		vidmem[i]=WHITE_TXT;
		i++;
	};
};

unsigned int c_printf(char *message, unsigned int line)
{
	char *vidmem = (char *) 0xb8000;
	unsigned int i=0;

	i=(line*80*2);

	while(*message!=0)
	{
		if(*message=='\n')
		{
			line++;
			i=(line*80*2);
			*message++;
		} else {
			vidmem[i]=*message;
			*message++;
			i++;
			vidmem[i]=WHITE_TXT;
			i++;
		};
	};

	return(1);
};
скрипт линковщика link.ld
Код:
OUTPUT_FORMAT("binary")
ENTRY(start)
SECTIONS
{
 .text 0x100000 : {
 *(.text)
 }
 .data : {
 *(.data)
 }
 .bss :
 { 
 *(.bss)
 }
}
данные из командной строки:
Цитата:

C:\linkCandASM>fasm asm_code.asm asm_code.o
flat assembler version 1.73.30 (1042350 kilobytes memory)
1 passes, 135 bytes.

C:\linkCandASM>gcc -c c_code.c -o c_code.o -m32 -ffreestanding -nostdlib
c_code.c:7:1: warning: return type defaults to 'int' [-Wimplicit-int]
7 | c_main()
| ^~~~~~

C:\linkCandASM>ld -T link.ld -o outfile.bin asm_code.o c_code.o
ld: cannot perform PE operations on non PE output file 'outfile.bin'

C:\linkCandASM>objdump -h asm_code.o

asm_code.o: file format pe-i386

Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00000007 00000000 00000000 0000003c 2**2
CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE, NOREAD

C:\linkCandASM>objdump -h c_code.o

c_code.o: file format pe-i386

Sections:
Idx Name Size VMA LMA File off Algn
0 .text 000000f0 00000000 00000000 000000dc 2**2
CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
1 .data 00000000 00000000 00000000 00000000 2**2
ALLOC, LOAD, DATA
2 .bss 00000000 00000000 00000000 00000000 2**2
ALLOC
3 .rdata 00000010 00000000 00000000 000001cc 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
4 .rdata$zzz 00000044 00000000 00000000 000001dc 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA

C:\linkCandASM>gcc --version
gcc (x86_64-win32-sjlj-rev0, Built by MinGW-W64 project) 12.2.0
линковщик не хочет собирать пишет (ld: cannot perform PE operations on non PE output file 'outfile.bin'), подскажите что не так?

Последний раз редактировалось Arthur800; 31.10.2022 в 19:10.
Arthur800 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сборка из плоских файлов в отчет dianamiss Microsoft Office Excel 4 21.11.2017 09:39
Сборка листов из разных файлов в один Vja4eslav Microsoft Office Excel 8 17.08.2011 16:30
Сборка и разборка файлов SlippyK Помощь студентам 2 24.02.2011 22:06
Сборка нескольких файлов в один Gamst Помощь студентам 4 02.06.2010 20:19
Сравнение объектных переменных NomadV Microsoft Office Word 1 09.04.2010 16:44