Home Upgrade Search Memberlist Extras Hacker Tools Award Goals Help Wiki Contact

From C to Mips32 help pleaseeeeeeeee!!!!!

I have done this program in c but i have difficulties to translate it to Mips32.I used gcc -march=mips32 somefile.c but doesn't work.PLEASE CAN ANYONE DO THIS FOR ME, help me pleaseeeee.

I am not so good in linux,,,,,i translated this program in using gcc -s somefile.c but in assembly x86. I want Mips32. Pleaseeeeeee help meeeeeeeeeeeeeeeeeeee.

#include <stdio.h>
#include <stdlib.h>
#define base 2

int sequenza(int);
int proba(int);
int main(){

printf("\n L'applicazione consiste nel determinare\n ");
printf(" la probabilità su uno lancio di moneta \n\n");
printf("L'applicazione scomette che nei prossimi n lanci non usciranno piu di due croci consecutive\n");
char c;
do{

int numero, successo, i, seq = 1;
printf("\n\n->inserire un numero superiore o uguale a zero :");

/*inserimento numero di lancio*/
scanf("%d", &numero);

/*controllo se il numero inserito è negativo*/
while(numero < 0){
printf("Attenzione il numero inserito non è valido! inserirlo di nuovo > ");
scanf("%d", &numero);
}

/*calcolo du numero de sequenza possibile*/
seq = sequenza(numero);

/*calcolo numero di sequenza di successo*/
successo = proba(numero);

printf("\nprobabilità di successo = %d / %d\n\n", successo, seq);
printf(" Digitare c per continuare oppure w per uscire ");
c=getchar();

}while((getchar())!='w');

return 0;
}


int proba(int n){
if(n < 3)
return sequenza(n);
else
return proba(n - 1) + proba(n - 2)+ proba(n - 3);
}

int sequenza(int a){
int i, seq = 1;
for(i = 1; i<= a;i++)
seq = seq * base;
return seq;
}












assembler x86

.file "main.c"
.section .rodata
.align 4
.LC0:
.string "\n L'applicazione consiste nel determinare\n "
.align 4
.LC1:
.string " la probabilit\303\240 su uno lancio di moneta \n"
.align 4
.LC2:
.string "L'applicazione scomette che nei prossimi n lanci non usciranno piu di due croci consecutive"
.align 4
.LC3:
.string "\n\n->inserire un numero superiore o uguale a zero :"
.LC4:
.string "%d"
.align 4
.LC5:
.string "Attenzione il numero inserito non \303\250 valido! inserirlo di nuovo > "
.align 4
.LC6:
.string "\nprobabilit\303\240 di successo = %d / %d\n\n"
.align 4
.LC7:
.string " Digitare c per continuare oppure w per uscire "
.text
.globl main
.type main, @function
main:
leal 4(%esp), %ecx
andl $-16, %esp
pushl -4(%ecx)
pushl %ebp
movl %esp, %ebp
pushl %ecx
subl $52, %esp
movl $.LC0, (%esp)
call printf
movl $.LC1, (%esp)
call puts
movl $.LC2, (%esp)
call puts
.L4:
movl $1, -24(%ebp)
movl $.LC3, (%esp)
call printf
leal -12(%ebp), %eax
movl %eax, 4(%esp)
movl $.LC4, (%esp)
call scanf
jmp .L2
.L3:
movl $.LC5, (%esp)
call printf
leal -12(%ebp), %eax
movl %eax, 4(%esp)
movl $.LC4, (%esp)
call scanf
.L2:
movl -12(%ebp), %eax
testl %eax, %eax
js .L3
movl -12(%ebp), %eax
movl %eax, (%esp)
call sequenza
movl %eax, -24(%ebp)
movl -12(%ebp), %eax
movl %eax, (%esp)
call proba
movl %eax, -16(%ebp)
movl -24(%ebp), %eax
movl %eax, 8(%esp)
movl -16(%ebp), %eax
movl %eax, 4(%esp)
movl $.LC6, (%esp)
call printf
movl $.LC7, (%esp)
call printf
call getchar
movb %al, -5(%ebp)
call getchar
cmpl $119, %eax
jne .L4
movl $0, %eax
addl $52, %esp
popl %ecx
popl %ebp
leal -4(%ecx), %esp
ret
.size main, .-main
.globl proba
.type proba, @function
proba:
pushl %ebp
movl %esp, %ebp
pushl %ebx
subl $20, %esp
cmpl $2, 8(%ebp)
jg .L7
movl 8(%ebp), %eax
movl %eax, (%esp)
call sequenza
movl %eax, -8(%ebp)
jmp .L8
.L7:
movl 8(%ebp), %eax
subl $1, %eax
movl %eax, (%esp)
call proba
movl %eax, %ebx
movl 8(%ebp), %eax
subl $2, %eax
movl %eax, (%esp)
call proba
addl %eax, %ebx
movl 8(%ebp), %eax
subl $3, %eax
movl %eax, (%esp)
call proba
addl %eax, %ebx
movl %ebx, -8(%ebp)
.L8:
movl -8(%ebp), %eax
addl $20, %esp
popl %ebx
popl %ebp
ret
.size proba, .-proba
.globl sequenza
.type sequenza, @function
sequenza:
pushl %ebp
movl %esp, %ebp
subl $16, %esp
movl $1, -8(%ebp)
movl $1, -4(%ebp)
jmp .L11
.L12:
sall -8(%ebp)
addl $1, -4(%ebp)
.L11:
movl -4(%ebp), %eax
cmpl 8(%ebp), %eax
jle .L12
movl -8(%ebp), %eax
leave
ret
.size sequenza, .-sequenza
.ident "GCC: (Ubuntu 4.3.3-5ubuntu4) 4.3.3"
.section .note.GNU-stack,"",@progbits
If your doing this with GCC then you need to set up a cross compiler that will compile into MIPS. try this link:

http://linux.bytesex.org/cross-compiler.html

http://www.linuxselfhelp.com/HOWTO/MIPS-HOWTO-9.html

...G4143
thank you very much.i am working with this information but is a little difficult.If anyone has done this in linux could compile it for me to mips32????? pleaseeeeeeee


Possibly Related Threads...
Thread / Author Replies Views Last Post
[Assembly] by severosApr 8, 2015 02:24 PM 3 278 Apr 8, 2015 02:24 PM
Last Post: LevelUp
[Assembly] by 6577657534735Mar 3, 2014 12:46 AM 3 139 Mar 3, 2014 12:46 AM
Last Post: 6577657534735