Thema geschlossen  Thema schreiben 
Seiten (3): « Erste < Vorherige 1 [2] 3 Nächste > Letzte »
Verfasser Nachricht
dark-awesome
stehn


Beiträge: 3.204
Gruppe: Banned
Registriert seit: Jul 2010

Status: Offline
Danke erhalten: 2192
Beitrag: #16
xPSP  RE: [TuT] Hello World in C

So wenn du mir jetzt noch sagst wo die hin muss dann gerne ich mache das ja mit PSPDEV und da gibt es so viele Ordner.
Habs geschaft.

Hier nochmal ein Code mit noch ein Paar erklärungen:

PHP-Code:
//Hello World

/* Dies sind die einzellnen includes ohne die würde garn nichts gehen */
#include <pspkernel.h>
#include <pspdebug.h>
#include <pspcallbacks.h>

 
#define printf pspDebugScreenPrintf

PSP_MODULE_INFO("Hello World",0,1,1);

/* int main() { sagt den Compiler da hier das Haupt Programm beginnt */
int main() {
    
pspDebugScreenInit();
    
pspDebugScreenClear();
    
SetupCallbacks();
  
    
/* Dies ist der Text der Ausgegeben wird und ( \n ) steht
    dabei für New Line also neu Zeile */
    
pspDebugScreenPrintf("Hello World\n");
    
sceKernelSleepThread();
    
    
/* return 0; steht dafür das der Code abgeschlossen wird und } steht für hier ist das Ende des Hauptprogrammes */
    
return 0;


West Zeit / Westside

Dieser Beitrag wurde zuletzt bearbeitet: 07.12.2010 01:05 von dark-awesome.

07.12.2010 00:25
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Unbekannt
Holiday News-Writer
*****


Beiträge: 1.600
Gruppe: User
Registriert seit: Mar 2010

Status: Offline
Danke erhalten: 4404
Beitrag: #17
RE: [TuT] Hello World in C

return 0; steht nicht für das Ende des Hauptprogramm, es steht primiär dafür, das der Code abgeschloßen wird.

int main() ist sowas wie eine Einleitung des Codes.




Ab Sofort werden alle unnötigen PNs nicht mehr beantwortet. Ich bin wieder mal weg von PSPKing und unterstütze eine andere Seite da ich hier nicht mehr erwünscht bin. Danke an PSP-Hilfe und den Moderatoren und all die anderen User die nicht so viel Dummeszeug labern.
07.12.2010 01:01
Alle Beiträge dieses Benutzers finden
Folgende User bedanken sich:
dark-awesome (Dec-7-2010)
dark-awesome
stehn


Beiträge: 3.204
Gruppe: Banned
Registriert seit: Jul 2010

Status: Offline
Danke erhalten: 2192
Beitrag: #18
xPSP  RE: [TuT] Hello World in C

Unbekannt :
return 0; steht nicht für das Ende des Hauptprogramm, es steht primiär dafür, das der Code abgeschloßen wird.

int main() ist sowas wie eine Einleitung des Codes.


Ja das meine ich (ich geb zu das es verwirren kann ich werde es um ändern)

PS: und int main() sagt dem Compiler das hier das Hauptprogramm beginn hab ich erst letztens in einen Buch gelesen.


West Zeit / Westside

07.12.2010 01:04
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Folgende User bedanken sich:
Unbekannt (Dec-7-2010)
Unbekannt
Holiday News-Writer
*****


Beiträge: 1.600
Gruppe: User
Registriert seit: Mar 2010

Status: Offline
Danke erhalten: 4404
Beitrag: #19
RE: [TuT] Hello World in C

main() ist damit gemeint, dass es sich um das Hauptprogramm handelt "main.c".
Wie ich gesagt habe int main() ist eine Einleitung.




Ab Sofort werden alle unnötigen PNs nicht mehr beantwortet. Ich bin wieder mal weg von PSPKing und unterstütze eine andere Seite da ich hier nicht mehr erwünscht bin. Danke an PSP-Hilfe und den Moderatoren und all die anderen User die nicht so viel Dummeszeug labern.
07.12.2010 01:18
Alle Beiträge dieses Benutzers finden
dark-awesome
stehn


Beiträge: 3.204
Gruppe: Banned
Registriert seit: Jul 2010

Status: Offline
Danke erhalten: 2192
Beitrag: #20
RE: [TuT] Hello World in C

So kann man das auch sagen aber im Endeffekt ist es das gleiche.


West Zeit / Westside

07.12.2010 01:21
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Folgende User bedanken sich:
Unbekannt (Dec-7-2010)
knopper
Halbprofi
***


Beiträge: 135
Gruppe: User
Registriert seit: Apr 2010

Status: Offline
Danke erhalten: 58
Beitrag: #21
xPSP  RE: [TuT] Hello World in C

Gibt's eigentlich auch Umlaute für die Ausgabe mit 'printTextScreen' im Graphic-Modus???


PSP 3004, FW 6.6
07.12.2010 11:03
Alle Beiträge dieses Benutzers finden
HacKmaN
Ex-Developer
*


Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009

Status: Offline
Danke erhalten: 3319
Beitrag: #22
xPSP  RE: [TuT] Hello World in C

Unbekannt :
return 0; steht nicht für das Ende des Hauptprogramm, es steht primiär dafür, das der Code abgeschloßen wird.

int main() ist sowas wie eine Einleitung des Codes.


Return 0; steht nicht für Abgeschlossenen Code. Es bedeutet nur dass der Compiler hier diverse Werte wieder vom Stack in die Register zurückschreibt, den Rückgabewert in $v0 schreibt und auf die Rücksprungaddresse springt:

Code:
; die Register wieder zurücksetzten
; z.B. lw $bla, 0xDEADBEEF($sp)

li $v0, 0   ; $v0 = Rückgabewert

; Zurückspringen, wegen dem Branch-Delay-Slot wird die Instruction
; danach auch noch ausgeführt
jr $ra
addiu $sp, $sp, blaaa    ; stack wiederherstellen, wird wegen delay slot ausgeführt


Es wird nur wieder die 2. Instruction nach dem Sprung auf die Funktion wieder aufgerufen.

Also z.B.

Code:
blaaa:
    jr $ra      ; zurückspringen
    li $v0, 0  ; $v0 = 0

module_start:
    subu $sp, $sp, 4  ; platz für einen Integer im Stack schaffen
    sw $ra, 0($sp)     ; Rücksprungaddresse auf dem Stack sichern

    li $v0, 1  ; $v0 = 1
    jal blaaa  ; PC + 8 nach $ra schreiben und springen
    nop        ; no operation, wegen load delay slot
    
    lw $ra, 0($sp)      ; Rücksprungadresse wieder zurücksetzten
    jr $ra                  ; Zur Firmware zurückkehren
    addiu $sp, $sp, 4  ; delay slot, stack wiederherstellen


Die Main ist auf der PSP eigentlich NICHT der Beginn des Hauptprogramms. Der Programmcode auf der PSP startet bei module_start, und wenn das Modul gestoppt wird, wird module_stop ausgeführt. Dass PSPSDK erledigt es allerdings alles für dich, da steht dann im Code etwas der Art

Code:
/* Auf adresse 0xblaaaaaa, deshalb sub_blaaaaaa */
int main(int argc, char *argv[])
{
     // dein Code
};

In Assembler:

sub_blaaaaaa:
    ; dein Code

int module_start(int args, void *argp)
{
     int thid = sceKernelCreateThread("main_thread", 0xblaaaaaa, Priority, Stacksize, 0, NULL);
     if(thid >= 0)
           sceKernelStartThread(thid, args, argp);
    
     return 0;
};

in Assembler:

module_start:
     subu $sp, $sp, 12    ; Platz für $ra, $a0 und $a1 im Stack schaffen
     sw $ra, 0($sp)        ; $ra sichern
     sw $a0, 4($sp)        ; $a0 sichern
     sw $a1, 8($sp)       ; $a1 sichern
    
     li $a0, 0xdeadbeef   ; Die Addresse vom namen-string in $a0 laden
     li $a1, 0xblaaaaaa   ; Adresse der main
     li $a2, Priority         ; logisch

     jal sceKernelCreateThread

     li $a3, Stacksize      ; delay slot, wird vor jal ausgeführt
    

     bltz $v0, loc_blaaa  ; Prüfen ob $v0 kleiner als 0 ist
    
     move $a0, $v0        ; $a0 = $v0
     lw $a1, 4($sp)        ; $a1 = der alte wert von $a0
     lw $a2, 8($sp)        ; $a2 = der alte wert von $a1
     nop                       ; load delay slot
    
     jal sceKernelStartThread
     nop                      ; branch delay slot

     loc_blaaa:
         ; Register zurückschreiben
         lw $a0, 4($sp)
         lw $a1, 8($sp)
         lw $ra, 0($sp)

         li $v0, 0                ; v0 = 0
         jr $ra                    ; zur firmware zurückspringen
         addiu $sp, $sp, 12   ; delay slot, stack wiederherstellen


Ich hoff jetzt ist es etwas besser verstanden :/

Dieser Beitrag wurde zuletzt bearbeitet: 07.12.2010 15:01 von HacKmaN.

07.12.2010 14:22
Alle Beiträge dieses Benutzers finden
Folgende User bedanken sich:
Unbekannt (Dec-12-2010), pspbricker (Dec-7-2010), _Kai_ (Dec-7-2010), PSFAQ (Dec-7-2010)
Dr. Soup
Durchstarter
**


Beiträge: 58
Gruppe: User
Registriert seit: Mar 2010

Status: Offline
Danke erhalten: 70
Beitrag: #23
xPSP  RE: [TuT] Hello World in C

Wenn ein Module gestoppt wird wird module_stop ausgeführt falls exportiert. Und bei einem jal (Jump and Link) gilt $ra = PC + 8 (zweite Instruction nach dem jal, da sich PC + 4 im Delay Slot befindet).

PS: Sorry für die kleine "Besserwisser-Attacke" :D


07.12.2010 14:57
Alle Beiträge dieses Benutzers finden
Folgende User bedanken sich:
-blue7 (Dec-7-2010)
HacKmaN
Ex-Developer
*


Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009

Status: Offline
Danke erhalten: 3319
Beitrag: #24
xPSP  RE: [TuT] Hello World in C

Dr. Soup :
Wenn ein Module gestoppt wird wird module_stop ausgeführt falls exportiert. Und bei einem jal (Jump and Link) gilt $ra = PC + 8 (zweite Instruction nach dem jal, da sich PC + 4 im Delay Slot befindet).

PS: Sorry für die kleine "Besserwisser-Attacke" Big Grin


Danke für die Verbesserungen Smile
Ich bessers mal aus siesta

07.12.2010 15:00
Alle Beiträge dieses Benutzers finden
dark-awesome
stehn


Beiträge: 3.204
Gruppe: Banned
Registriert seit: Jul 2010

Status: Offline
Danke erhalten: 2192
Beitrag: #25
RE: [TuT] Hello World in C

Du scheinst dich ja gut aus zu kennen. Smile


West Zeit / Westside

Dieser Beitrag wurde zuletzt bearbeitet: 07.12.2010 15:03 von dark-awesome.

07.12.2010 15:03
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Fixie
Hungrig und Stur


Beiträge: 3.740
Gruppe: Banned
Registriert seit: Feb 2009

Status: Offline
Danke erhalten: 1558
Beitrag: #26
RE: [TuT] Hello World in C

Wo gib's ein Tutorial ohne Fehler?
Kann HTK nicht trauen...

07.12.2010 15:04
Alle Beiträge dieses Benutzers finden
dark-awesome
stehn


Beiträge: 3.204
Gruppe: Banned
Registriert seit: Jul 2010

Status: Offline
Danke erhalten: 2192
Beitrag: #27
RE: [TuT] Hello World in C

Der Code von mir und die der anderen stimmen ja aber die Erklärung war wohl nicht so richtig.


West Zeit / Westside

Dieser Beitrag wurde zuletzt bearbeitet: 07.12.2010 15:47 von dark-awesome.

07.12.2010 15:45
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
HacKmaN
Ex-Developer
*


Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009

Status: Offline
Danke erhalten: 3319
Beitrag: #28
xPSP  RE: [TuT] Hello World in C

killagodzilla :
Wo gib's ein Tutorial ohne Fehler?
Kann HTK nicht trauen...


Lern C lieber erst fürn PC, am besten ist C von A bis Z.

07.12.2010 15:47
Alle Beiträge dieses Benutzers finden
Unbekannt
Holiday News-Writer
*****


Beiträge: 1.600
Gruppe: User
Registriert seit: Mar 2010

Status: Offline
Danke erhalten: 4404
Beitrag: #29
RE: [TuT] Hello World in C

Danke Hackman. Habs etwas falsch erklärt, aber müsste Funktionieren.




Ab Sofort werden alle unnötigen PNs nicht mehr beantwortet. Ich bin wieder mal weg von PSPKing und unterstütze eine andere Seite da ich hier nicht mehr erwünscht bin. Danke an PSP-Hilfe und den Moderatoren und all die anderen User die nicht so viel Dummeszeug labern.
07.12.2010 15:58
Alle Beiträge dieses Benutzers finden
_Kai_
be linux
**


Beiträge: 2.680
Gruppe: Programmierung
Registriert seit: Nov 2009

Status: Abwesend
Danke erhalten: 2809
Beitrag: #30
xPSP  RE: [TuT] Hello World in C

Unbekannt :
Hast du es getestet? Müsste theoretisch klappen.


Unbekannt :
Das mit Callbacks habe ich glaube falsch. Muss nochmal nach schauen.


Warum postest du ein Tutorial dass du nicht mal getestet hast / dir sicher bist dass es auch richtig ist ? Du willst doch den Anfängern helfen und sie nicht verwirren oder ? Noidea


PSVita mit 16gb Memorystick und PlayStation+
+ Uncharted + Army Corps of Hell + Assassins Creed
+ NFS Most Wanted + COD Black Ops + Resistance
+ Everybodys Golf + Modnation Racers
Für PSN ID => PN
07.12.2010 18:26
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Folgende User bedanken sich:
Unbekannt (Dec-7-2010), pspbricker (Dec-7-2010)
Thema geschlossen  Thema schreiben 

Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
xPSP [TUT] PSP Hello World in C dark-awesome 11 6.873 16.08.2011 17:25
Letzter Beitrag: _Kai_
xPSP [TUT] PSPSDK unter Ubuntu installieren + Hello World kompilieren -blue7 82 36.312 02.08.2011 20:18
Letzter Beitrag: Neutrosider
xPSP [TuT] Hello World in D ! 3m!n 9 4.575 09.04.2011 08:15
Letzter Beitrag: HyBriDo
xPSP [TuT, Update] Hello World in C Unbekannt 5 3.549 15.12.2010 18:40
Letzter Beitrag: pspbricker

Druckversion anzeigen
Thema einem Freund senden
Thema abonnieren | Thema zu den Favoriten hinzufügen




» zum Seitenanfang