genau das mein ich ja
wenn den Assemblerkernel assembliere, geht nasm davon aus, dass er bei 0 anfängt, deswegen stell ich manuell das DS und ES register um:
cli
mov ax, cs
mov ds, ax
mov es, ax
sti
dann funtkioniert der Assemblerkernel
aber der CKernel ist bei 1000:0200, der compiler denkt aber nun auch er wäre bei 0000:0000, das Segment wird ja schon auf 1000 gestellt, also denkt er im Endeffekt er ist bei 1000:0000
deswegen muss ich ja das Offset erst umstellen bevor etwas funktionieren kann
das wär auch nicht das Problem,
ich will aber aus dem CKernel Funktionen im Assemblerkernel ausführen
das heißt ich msste die Register die ganze Zeit wieder umstellen
Im Endeffekt muss ich dem Compiler der den CKernel compiliert (gcc) klar machen, dass alle seine Daten 200h bytes weiter hinten liegen, als er eigentlich denkt, bei nasm wär das mit
org 200
erledigt
und so einen Befehl bräucht ich halt für gcc, bzw. für as (as ist der Assembler den gcc nach dem compilieren benutzt um das ganze zu assemblieren)
EDIT:
as unterstützt sogar org, allerdings funktioniert das Programm trotzdem nicht