[ vidonk @ 27.03.2017. 00:30 ] @
[ vidonk @ 27.03.2017. 00:30 ] @
[ Branimir Maksimovic @ 27.03.2017. 07:52 ] @
pa prikazuj na STDOUT koji je 1 , ne treba ti open /dev/tty1
[ vidonk @ 27.03.2017. 14:24 ] @
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 [ Branimir Maksimovic @ 27.03.2017. 15:10 ] @
Sta si probao? Da prikazes na STDOUT i nece?
[ vidonk @ 27.03.2017. 15:59 ] @
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 [ Branimir Maksimovic @ 27.03.2017. 18:10 ] @
A sta stavis u a0?
[ vidonk @ 27.03.2017. 18:45 ] @
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] [ Branimir Maksimovic @ 27.03.2017. 19:25 ] @
Meni se cini da u a0 ide fd, tj ako hoces na STDOUT onda je to 1. Dakle `li a0,1`
[ vidonk @ 27.03.2017. 19:34 ] @
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] [ mikigen @ 27.03.2017. 19:44 ] @
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?
[ vidonk @ 27.03.2017. 20:11 ] @
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 Copyright (C) 2001-2024 by www.elitesecurity.org. All rights reserved.
|