PlanetSwitch Planet3DS PlanetVita PSP.de PlanetiPhone Classics Forum Handheld-Wiki

PGN-ID:[?] (Nicht eingeloggt)
Login
Registrieren
PlanetDS PlanetGameboy N-Page.de
portablegaming.de  

Zurück   portablegaming.de > Allgemeines Spielehandheldforum, GBA, N-Gage und Development > Development Abteilung


Development Abteilung Ihr wollt für euren Lieblingshandheld Spiele oder Tools entwickeln?
Bitte die Präfixe benutzen!

Antwort
 
LinkBack Themen-Optionen Thema durchsuchen
Alt 04.08.2003, 19:20   #1
 
Registriert seit: 27.06.2003
Alter: 33

Vertex hat die Renommee-Anzeige deaktiviert

Standard Objektcode

Hi!
Da mir das Kompilieren einfach zuuu lange dauert, kann ich auch ganz
einfach *.o dateien selber erstellen, da dauert soetwas höchstens 60 Sekunden,
statts 5 Stunden kompilieren.
Jedenfalls wüsste ich nicht, wie ich diese Objektdateien mit in das
Mainprogramm einbinden kann. Ich weis nur das man vorher das
angeben muss:
Code:
extern Sound;
Achja muss ich [ und ] noch hinter Sound angeben, weil es in
original auch ein Array ist?
Wie muss die Commandozeile dann umschreiben, damit er die
*.o Dateien mit einbindet?
Er linkt ja dann die Objektdateien, dauert das dann nciht mehr sooo
lange?
thx!
mfg olli
Vertex ist offline   Mit Zitat antworten
Sponsored Links
Alt 04.08.2003, 21:43   #2
Moderator
 
Benutzerbild von goldmomo
 
Registriert seit: 03.02.2003

goldmomo hat die Renommee-Anzeige deaktiviert

Standard RE: Objektcode

Eigentlich musst du den Compiler (der bei gcc auch gleich linker ist) das Object mitgeben. Ein einfaches Extern sollte reichen, allerdings sollte der Typ auch stimmen also char*. Sehe dir einfach mal die Compiler-Options an, da müsste es stehen. Wieso dauert bei dir eigentlich das Compilieren so lange? Selbst wenn die Datei einige MB gross ist, sollte es keine Stunden dauern. Vielleicht kannst duch auch schneller mit einen Assembler machen, mache unterstützen (ARMASM) die incbin direktive, d.h. du kannst das Object roh einbinden. Wenn du nur mit den Assembler ein Object-File erzeugst und es dann zu den C Sachen hinzulinkst müsste es auch gehen. Ich glaube es gibt auch im Internet Tools, die aus einer Roh-Datei ein Objekt machen (musst nur den Externen Namen angeben), suche einfach mal.

mfg

P.s.:

Habe es mal mit goldroad getestet,

also um ein ~8MByte grosses File in mein Assemblerzeug Roh zu includen braucht er am Ende 0,5s.
Wenn es davor in Hexcode umgewandelt wird (dann sinds ca 23.9MByte)
und ich include es, braucht der Assembler 17,6s um alles zu assemblieren.
goldmomo ist offline   Mit Zitat antworten
Alt 05.08.2003, 11:41   #3
 
Registriert seit: 27.06.2003
Alter: 33

Vertex hat die Renommee-Anzeige deaktiviert

Standard

Hi!
Ja das werde ich nochmal versuchen, aber ich muss beim GCC immer
objcopy -O binary Main.elf Main.gba
angeben, und Main.elf ist die Objektdatei.
Das dauert leider sehhhhrrrr laaange, frage mich nicht warum. Ich pers.
denke ja, dass er jeden Wert prüft, ob er nicht den Wertebereich des
Array-Datentyps über bzw. unterschreitet.
Was ist eigentlich "direktive" ? ASM unterstützung habe ich ja auch
durch Inline Assembler. Aber ist ja auch egal, weil ich mir ja letzenendes
die Objektdateien selber erstellen kann, ich muss nur noch wissen,
an welchen Offset er die größe des Arrays speichert, und ob der Name
des Arrays ebenfalls mit eingeschleust wird.
mfg olli
Vertex ist offline   Mit Zitat antworten
Alt 05.08.2003, 12:02   #4
Moderator
 
Benutzerbild von goldmomo
 
Registriert seit: 03.02.2003

goldmomo hat die Renommee-Anzeige deaktiviert

Standard

Mit Direktive meine ich einen Befehl, bei C kann man immer nur include, d.h.
die Datein muessen einen C-Syntax entsprechen. Aber ein Assembler kann aich binaer
Include, d.h. er kopert die Daten nur. Da sieht dann so aus (Pseudo Syntax)

XREF variablen_name
variablen_name incbin "sample.aif"

Deshalb kannst du evtl mit einen Assembler gas oder armasm ein Objectfile erzeugen.

Dann compilierst du dein normales C File und linkst das andere File dran mit z.B.:

gcc -c meinc.c
gcc -o gba.elf meinc.o blabla.o
objectcopy ....

Ein normaler extern char *variable_name sollte in deinen C File genuegen.

Versuchs einfach mal
goldmomo ist offline   Mit Zitat antworten
Alt 06.08.2003, 18:10   #5
 
Registriert seit: 27.06.2003
Alter: 33

Vertex hat die Renommee-Anzeige deaktiviert

Standard

Sorry das es so lange gedauert hat mit meiner Antwort
Jetzt kapiere ich das erstmal mit dem Assembler
Wüsstest Du, wie ich das mit goldroad machen kann?
armasm ist doch sicherlich licensiert bei nintendo und kostet
sicher eine große Stange Geld. NAS ? habe bei google imme rnur NASM
gefunden.
Jedenfalls habe ich halt mal folgendes versucht:
goldroad verzeichnis eine Test.s angelegt die folgendes
beinhaltet:
Zitat:
XREF ATB
ATB incbin "ATB.wav"
und eine make.bat:
Zitat:
goldroad Test.s Test.o
ATB.wav ist natürlich im selben verzeichnis. Wenn ich nun
make.bat starte, dann kommt folgender Fehler:
Zitat:
C:\GBA\ASM>goldroad Test.s Test.o
error : line 0 : unrecognised token
XREF ATB
error : line 1 : unrecognised token
ATB incbin "ATB.wav"

assembled with 2 errors
InlineASM geht leider auch nicht mit dem GCC-Compiler:
Habe das mal so implementiert:
Code:
char var1 = 3, var2 = 4;
_asm
{
	mov  al,var1
	xchg al,var2
	mov  var1,al
}
und der meldet dann einfach:
"Main.cpp:4: syntax error before `{' token"

mfg olli
Vertex ist offline   Mit Zitat antworten
Alt 06.08.2003, 18:22   #6
Moderator
 
Benutzerbild von goldmomo
 
Registriert seit: 03.02.2003

goldmomo hat die Renommee-Anzeige deaktiviert

Standard

Leider kann goldroad keine Objekt-Dateinen erzeugen, deswegen fällt der für dein Problem schon mal weg. Was ich geschrieben hatte war auch nur Pseudocode

Bei gcc hast du auch as dabei, das ist der GNU Assembler, der kennt aber glaub ich keine incbin Direktive. Aber es kann sein, dass er evtl. auch normale include Dateien schneller bearbeitet als der C-Compiler, da ein Assembler nicht so komplex ist, so evtl. schneller.

auf http://re-eject.gbadev.org gibts die Referenz für den gnu Assembler (gas).

Zu deinen Inline-Asm, die Befehle gehen so nicht, ist ja kein x86, sehe dir auch mal auf der reject Seite die ARM Befehle an.
goldmomo ist offline   Mit Zitat antworten
Alt 06.08.2003, 18:48   #7
 
Registriert seit: 27.06.2003
Alter: 33

Vertex hat die Renommee-Anzeige deaktiviert

Standard

Hi!
Danke ich habe jetzt eine richtig gute refernz mit Comandline Befehlen
gefunden.
http://tigcc.ticalc.org/doc/gnuasm.html#SEC97B
Da ich noch nicht mit der Syntax von ASM klar komme, könntest
Du mir vieleicht den Code dafür schreiben ?
IncBin wird ja bei dieser Seite mit aufgeführt.
incbin "ATB:ATB.wav"
Geht ja leider nicht.
Achja da das event. von Bedeutung sein könnte:
es sollte dann in C++ als ein Array verwendbar sein.
Der Datentyp ist unsigned Char (=8 Bit) bzw. Byte
Danke schonmal
mfg olli
Vertex ist offline   Mit Zitat antworten
Antwort

  portablegaming.de > Allgemeines Spielehandheldforum, GBA, N-Gage und Development > Development Abteilung

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an



Alle Zeitangaben in WEZ +2. Es ist jetzt 00:36 Uhr.


Powered by vBulletin® Version 3.8.9 (Deutsch)
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.0
Template-Modifikationen durch TMS
PortableGaming.de © bk 2000 - 2010

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117