Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Jednostavan HelloWorld.s (assembler) ne prikazuje ništa u konzoli

[es] :: Linux :: Jednostavan HelloWorld.s (assembler) ne prikazuje ništa u konzoli

[ Pregleda: 6262 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

vidonk
Slobodan Vidovic
Niksic

Član broj: 192156
Poruke: 354
*.crnagora.net.



+9 Profil

icon Jednostavan HelloWorld.s (assembler) ne prikazuje ništa u konzoli27.03.2017. u 00:30 - pre 84 meseci
Pozdrav ljudi, pokušavam da pokrenem jedostavan program napisan u assebleru za MIPS platforumu ali on jednostavno ne prikazuje ništa u konzoli nakon što ga pokrenem. Dakle evo mog programa

Code:
/*
 * hello-1.2/Makefile
 *
 * This file is subject to the terms and conditions of the GNU General Public
 * License.  See the file "COPYING" in the main directory of this archive
 * for more details.
 *
 * Copyright (C) 1995, 1997 by Ralf Baechle
 */
#include <regdef.h>
#include <sys/asm.h>
#include <sys/syscall.h>

#define O_RDWR                02

EXPORT(__start)


    .set    noreorder
    LEAF(main)

#    fd = open("/dev/tty1", O_RDWR, 0);
    la    a0,tty
    li    a1,O_RDWR
    li    a2,0
    li    v0,SYS_open
    syscall

    bnez    a3,quit
    move    s0,v0                # delay slot

#    write(fd, "hello, world.\n", 14);
    move    a0,s0
    la    a1,hello
    li    a2,14
    li    v0,SYS_write
    syscall

#    close(fd);
    move    a0,s0
    li    v0,SYS_close
    syscall

quit:
    li    a0,0
    li    v0,SYS_exit
    syscall

    j    quit
    nop

    END(main)

    .data
tty:    .asciz    "/dev/tty1"
hello:    .ascii    "Hello, world.\n"


Tu je i makefile

Code:
#
# hello-1.2/Makefile
#
# This file is subject to the terms and conditions of the GNU General Public
# License. See the file COPYING in the main directory of this archive for more
# details.

tool-prefix    = mips-linux-gnu-

CC        = $(tool-prefix)gcc -I /home/slobodan/rtl819x-toolchain/toolchain/rsdk-1.5.5-5281-EB-2.6.30-0.9.30.3-110714/include/sys/
LD        = $(tool-prefix)ld
STRIP        = $(tool-prefix)strip

CFLAGS        = -G0 -mno-abicalls -fno-pic
LDFLAGS        = -N -s

all:        hello

hello:        hello.o
        $(LD) $(LDFLAGS) -o hello hello.o

hello.o:    hello.S
        $(CC) $(CFLAGS) -c hello.S

clean:
        rm -f core a.out *.o *.s

distclean:    clean
        rm -f hello


ranije dok sam koristio Debian 6 uspio sam da uradim cross-compile ovog programa i sve je bilo ok sad na ubuntu isti taj program ne ispisuje ništa u konzoli. Na slici lijevo je program koji radi koji sam kompajlirao na debianu a desno je novi program koji ne radi i ne znam u čemu je kvaka. Za pokretanje ovog programa koristim ./qemu-mips-static a takođe sam ga prebacio i na moj MIPS box (ruter) i ista stvara jedan program radi ok dok drugi neće. Kao što možete da vidite na slici jedina je razlika u .data segmentu, stvarno ne znam


Signaure Hamer Dev .inc
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
c-bg-d-p1-76.bvcom.net.



+1064 Profil

icon Re: Jednostavan HelloWorld.s (assembler) ne prikazuje ništa u konzoli27.03.2017. u 07:52 - pre 84 meseci
pa prikazuj na STDOUT koji je 1 , ne treba ti open /dev/tty1
 
Odgovor na temu

vidonk
Slobodan Vidovic
Niksic

Član broj: 192156
Poruke: 354
*.crnagora.net.



+9 Profil

icon Re: Jednostavan HelloWorld.s (assembler) ne prikazuje ništa u konzoli27.03.2017. u 14:24 - pre 84 meseci
Citat:
Branimir Maksimovic: pa prikazuj na STDOUT koji je 1 , ne treba ti open /dev/tty1


Probao sam i bez dev/tty1 isto je ne prikazuje ništa u konzoli :) Ništa moraću da uradim crosscompile gdb-a pa da vidim šta se dešava
Signaure Hamer Dev .inc
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
c-bg-d-p1-76.bvcom.net.



+1064 Profil

icon Re: Jednostavan HelloWorld.s (assembler) ne prikazuje ništa u konzoli27.03.2017. u 15:10 - pre 84 meseci
Sta si probao? Da prikazes na STDOUT i nece?
 
Odgovor na temu

vidonk
Slobodan Vidovic
Niksic

Član broj: 192156
Poruke: 354
*.crnagora.net.



+9 Profil

icon Re: Jednostavan HelloWorld.s (assembler) ne prikazuje ništa u konzoli27.03.2017. u 15:59 - pre 84 meseci
Citat:
Branimir Maksimovic: Sta si probao? Da prikazes na STDOUT i nece?

Da u registar a1 stavim memorisku lokaciju riječi koju ispisujem, u a2 dužinu, u v0 sistemksi call za print string i onda samo pozovem syscall ali neće da ispiše na STDOUT ništa, probao sam u QTSPIM i MARS sve radi ok, nije mi jasno šta nedostaje ili sam negdje napravio grešku pa je ne vidim
Signaure Hamer Dev .inc
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
c-bg-d-p1-76.bvcom.net.



+1064 Profil

icon Re: Jednostavan HelloWorld.s (assembler) ne prikazuje ništa u konzoli27.03.2017. u 18:10 - pre 84 meseci
A sta stavis u a0?
 
Odgovor na temu

vidonk
Slobodan Vidovic
Niksic

Član broj: 192156
Poruke: 354
*.crnagora.net.



+9 Profil

icon Re: Jednostavan HelloWorld.s (assembler) ne prikazuje ništa u konzoli27.03.2017. u 18:45 - pre 84 meseci
Citat:
Branimir Maksimovic: A sta stavis u a0?

A bravo u a0 ide memorijska lokcacija stringa sad ću da probam
EDIT:

Neće da printa ništa, sve mi se izmiješalo ha ha

Ovako evo ga program moram da napravaim pauzu kad ga pogledam opet možda nešto i primjetim

Code:
#include <regdef.h>
#include <sys/asm.h>
#include <sys/syscall.h>

EXPORT(__start)


    .set    noreorder
    LEAF(main)
    
    la    a0,hello
    li    a1, 14
    li    v0,__NR_write
    syscall

quit:
    li    a0,0
    li    v0,SYS_exit
    syscall

    j    quit
    nop

    END(main)

    .data

hello:    .ascii    "\nZdravo, svijete. \n \n"


Evo je disasemblovana verzija

Code:
mips-linux-objdump -D ./hello

./hello:     file format elf32-tradbigmips


Disassembly of section .MIPS.abiflags:

00400098 <.MIPS.abiflags>:
  400098:    00002002     srl    a0,zero,0x0
  40009c:    01010005     0x1010005
    ...

Disassembly of section .reginfo:

004000b0 <.reginfo>:
  4000b0:    00000014     0x14
    ...
  4000c4:    00408110     0x408110

Disassembly of section .text:

004000d0 <.text>:
  4000d0:    3c040040     lui    a0,0x40
  4000d4:    24840100     addiu    a0,a0,256
  4000d8:    24020fa4     li    v0,4004
  4000dc:    0000000c     syscall
  4000e0:    24040000     li    a0,0
  4000e4:    24020fa1     li    v0,4001
  4000e8:    0000000c     syscall
  4000ec:    08100038     j    0x4000e0
  4000f0:    00000000     nop
    ...

Disassembly of section .data:

00400100 <.data>:
  400100:    0a5a6472     j    0x96991c8
  400104:    61766f2c     0x61766f2c
  400108:    20737669     addi    s3,v1,30313
  40010c:    6a657465     0x6a657465
  400110:    2e200a20     sltiu    zero,s1,2592
  400114:    0a000000     j    0x8000000
  400118:    00000000     nop
  40011c:    00000000     nop

Disassembly of section .pdr:

00000000 <.pdr>:
   0:    004000d0     0x4000d0
    ...
  18:    0000001d     0x1d
  1c:    0000001f     0x1f

Disassembly of section .gnu.attributes:

00000000 <.gnu.attributes>:
   0:    41000000     mftc0    zero,c0_index
   4:    0f676e75     jal    0xd9db9d4
   8:    00010000     sll    zero,at,0x0
   c:    00070405     0x70405


Učitam program u gdb i syscall je uredno pozvan/izvršen ali nema ništa kao output

[Ovu poruku je menjao vidonk dana 27.03.2017. u 20:04 GMT+1]

[Ovu poruku je menjao vidonk dana 27.03.2017. u 20:05 GMT+1]
Signaure Hamer Dev .inc
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
c-bg-d-p1-76.bvcom.net.



+1064 Profil

icon Re: Jednostavan HelloWorld.s (assembler) ne prikazuje ništa u konzoli27.03.2017. u 19:25 - pre 84 meseci
Meni se cini da u a0 ide fd, tj ako hoces na STDOUT onda je to 1. Dakle `li a0,1`
 
Odgovor na temu

vidonk
Slobodan Vidovic
Niksic

Član broj: 192156
Poruke: 354
*.crnagora.net.



+9 Profil

icon Re: Jednostavan HelloWorld.s (assembler) ne prikazuje ništa u konzoli27.03.2017. u 19:34 - pre 84 meseci
Citat:
Branimir Maksimovic: Meni se cini da u a0 ide fd, tj ako hoces na STDOUT onda je to 1. Dakle `li a0,1`


Bravo majstore tačno tako ja sam skroz bio izostavio fd, vodio sam se primjerima iz MARSA i QT-a evo ga i cijeli program ako nekom zatreba i meni za podsjetnik

Code:
/*
 * hello-1.2/Makefile
 *
 * This file is subject to the terms and conditions of the GNU General Public
 * License.  See the file "COPYING" in the main directory of this archive
 * for more details.
 *
 * Copyright (C) 1995, 1997 by Ralf Baechle
 */
#include <regdef.h>
#include <sys/asm.h>
#include <sys/syscall.h>

EXPORT(__start)


    .set    noreorder
    LEAF(main)
    li    a0,1        # first argument fd 1
    la    a1,hello    # second argument memory location of hello string
    li    a2,13        # lenght of string to print
    li    v0,__NR_write    # syscall write,they are defined in unistd.h
    syscall

quit:            # label quit
    li    a0,0        # delay slot
    li    v0,__NR_exit    # load system call for exit in v0
    syscall

    nop

    END(main)

    .data

hello:    .ascii    "Hello world!\n"




[Ovu poruku je menjao vidonk dana 27.03.2017. u 21:19 GMT+1]
Signaure Hamer Dev .inc
 
Odgovor na temu

mikigen
Direktor za Pecanje Riba
pored reke com

Član broj: 336524
Poruke: 37
*.adsl-a-5.sezampro.rs.



+11 Profil

icon Re: Jednostavan HelloWorld.s (assembler) ne prikazuje ništa u konzoli27.03.2017. u 19:44 - pre 84 meseci
I ja sam na linuxu. Probao bih ovaj tvoj rad, kako da ga kompajliram , kako bese, gcc program.o program da, to je za C, nekad se ucilo. asm, masm?
 
Odgovor na temu

vidonk
Slobodan Vidovic
Niksic

Član broj: 192156
Poruke: 354
*.crnagora.net.



+9 Profil

icon Re: Jednostavan HelloWorld.s (assembler) ne prikazuje ništa u konzoli27.03.2017. u 20:11 - pre 84 meseci
Citat:
mikigen: I ja sam na linuxu. Probao bih ovaj tvoj rad, kako da ga kompajliram , kako bese, gcc program.o program da, to je za C, nekad se ucilo. asm, masm?


Ovaj program se kompajlira za drugu platformu ne za i686 da bi mogao da ga kompajliraš moraš da instaliraš gcc-mips-linux-gnu ne znam da li dođe ld sa njim ili i njega moraš posebno. Imaš u vrhu topica makefile. A da bi pokrenuo program treba ti mips emulator na pr quemu mips staticki kompajliran
Signaure Hamer Dev .inc
 
Odgovor na temu

[es] :: Linux :: Jednostavan HelloWorld.s (assembler) ne prikazuje ništa u konzoli

[ Pregleda: 6262 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.