부트 로더를 작성하고 NASM
어셈블러 (AS86
이 아님)를 사용하여 컴파일하면 모든 것이 완벽하게 작동합니다.NASM, BCC 및 Ld86을 리얼 모드로 결합 : 잘못된 마법 번호
이제 응용 프로그램에 16 비트 C
코드를 삽입하는 방법을 배우고 싶습니다. 나는 8034 프로세서를 지원한다는 사실 때문에 bcc
이 그러한 상황에 권장되는 몇 가지 SO에서 읽었다. ld86: testasm.o has bad magic number
나는 다음에 내 코드를 감소 :
testasm.asm :
[bits 16]
global foo
foo:
mov ax, 0x0e41
int 0x10
jmp $
C
테스트 코드 내 코드를 결합하는 동안
나는 다음과 같은 오류에 직면 testc.c :
extern void foo();
main() {
foo();
}
과 메이크 :
CFLAGS=-0 -c
LDFLAGS=-T 0x7C00 -0
ASFLAGS=-f aout
all: testc.bin
testc.bin: testasm.o testc.o
ld86 -o [email protected] $^ $(LDFLAGS)
testc.o: testc.c
bcc -o [email protected] $^ $(CFLAGS)
testasm.o: testasm.asm
nasm -o [email protected] $^ $(ASFLAGS)
clean:
rm -f *.o testc.bin
나는 여전히 문제가 있습니다. 어느 누구도 NASM
, bcc
및 ld86
을 함께 결합하는 방법을 알고 있습니다.
ELF 개체 형식이 도입되기 전에 C 프로그래밍 언어의 기호 앞에 밑줄이 붙어서 레지스터 이름과 로컬 레이블과 구별됩니다. ELF를 채택한 적이 없기 때문에 이것은 여전히 하나의 Windows로 수행됩니다. – fuz
정보 주셔서 감사합니다 @fuz –