Hi, Just found Arnaud have explained the problems, so here give you an example I have written one year ago: # File: hello.s -- Say Hello to MIPS Assembly Language Programmer # Author: falcon <wuzhangjin@xxxxxxxxx>, 2009/01/17 # Ref: # [*] http://www.tldp.org/HOWTO/Assembly-HOWTO/mips.html # [*] MIPS Assembly Language Programmer's Guide # [*] See MIPS Run Linux(second version) # Compile: # $ gcc -o hello hello.s # or # $ as -o hello.o hello.s # $ ld -e main -o hello hello.o .text .globl main main: .set noreorder .cpload $gp # setup the pointer to global data .set reorder # print sth. via sys_write li $a0, 1 # print to standard ouput la $a1, stradr # set the string address lw $a2, strlen # set the string length li $v0, 4004 # index of sys_write: # __NR_write in /usr/include/asm/unistd.h syscall # causes a system call trap. # exit via sys_exit move $a0, $0 # exit status as 0 li $v0, 4001 # index of sys_exit # __NR_exit in /usr/include/asm/unistd.h syscall .rdata stradr: .asciiz "hello, world!\n" strlen: .word . - stradr # current address - the string address # end Regards, Wu Zhangjin On Fri, 2010-05-21 at 16:46 +0500, adnan iqbal wrote: > Hi all, > > I am trying to compile/link/execute following very simple program in > debian/MIPS (Tried on Qemu and Octeon). I am getting errors while > executing the program. gdb also shows a strange behavior showing > program entrypoint somehere in data segement. Any help getting this > sorted out shall be appreciated. > > Regards > Adnan > > Commands used to compile/link > ---------------------------------------------------- > $ as hello.s -o hello.o > $ld hello.o -o hello > $ ./hello > > > The code > --------------- > .data > str: > .asciiz "hello world\n" > .text > .globl __start > > __start: > jal f2 > la $4,str > li $2,4 > syscall > > ## terminate program via _exit () system call > li $2, 10 > syscall > f2: > add $8,$8,$0 > jr $31 >