Sorry...Ich vergaß....
<r><U><s>
</s>Bei dem Code:<e></e></U><br/>
<br/>
unsigned int getStringLength(char *string);<br/>
void print(char *string);<br/>
void restartMenu(void);<br/>
<br/>
void entry(void)<br/>
{<br/>
// print our string<br/>
print("Hello, world!\n");<br/>
<br/>
// restart the menu<br/>
restartMenu();<br/>
}<br/>
<br/>
void print(char *string)<br/>
{<br/>
unsigned int length;<br/>
length = getStringLength(string);<br/>
<br/>
asm volatile<br/>
(<br/>
"mov r0, #1\n" // stdout<br/>
"mov r1, %0\n" // the string<br/>
"mov r2, %1\n" // the length<br/>
"swi #0x900004\n" // write<br/>
: // no output<br/>
: "r"(string), "r"(length) // %0 and %1 input args<br/>
: "r0", "r1", "r2" // registers we clobber<br/>
);<br/>
}<br/>
<br/>
unsigned int getStringLength(char *string)<br/>
{<br/>
unsigned int i = 0;<br/>
while(string<I><s>
</s> != 0)<br/>
{<br/>
i++;<br/>
}<br/>
return i;<br/>
}<br/>
<br/>
void restartMenu(void)<br/>
{<br/>
char *pszMenuDir = "/usr/gp2x";<br/>
char *pszMenuCmd = "/usr/gp2x/gp2xmenu";<br/>
<br/>
asm volatile<br/>
(<br/>
"mov r0, %0\n" // directory<br/>
"swi #0x90000C\n" // chdir<br/>
<br/>
"mov r0, %1\n" // program to execute<br/>
"mov r1, #0\n" // arg 2 = NULL<br/>
"mov r2, #0\n" // arg 3 = NULL<br/>
"swi #0x90000B\n" // execve<br/>
: // no output<br/>
: "r"(pszMenuDir), "r"(pszMenuCmd) // %0 and %1 inputs<br/>
: "r0", "r1", "r2" // registers we clobber<br/>
);<br/>
}<br/>
<br/>
<br/>
Kam das heraus:<br/>
<br/>
<br/>
<br/>
-L"C:\Dokumente und Einstellungen\Internet\Desktop\GP2XSDK\Tools\arm-gp2x-linux\lib" -s <br/>
/gp2xsdk/Tools/lib/gcc/arm-gp2x-linux/3.4.6/../../../../arm-gp2x-linux/lib/crt1.o: In function `_start':<br/>
init.c
.text+0x2c): undefined reference to `main'<br/>
collect2: ld returned 1 exit status<br/>
Ausführung beendet<br/>
<br/>
<br/>
Habe aber alles laut Wiki eingestellt</I></r>