• Martes 20 de Mayo de 2025, 01:59

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - m0skit0

Páginas: 1 ... 39 40 [41] 42 43 ... 100
1001
ASM (Ensamblador) / Re: RLE en ensamblador MIPS
« en: Jueves 4 de Junio de 2009, 10:29 »
JR sólo copia el registro indicado al registro PC. En este caso $ra. Cuando haces jal, la dirección de ejecución + 8 se guarda en el registro $ra, que sería la dirección de retorno. Es donde volvemos al hacer jr $ra.

Cita de: "manurodri189"
Y otra cosa a la hora de almacenar las salidas lo deberia hacer en procesar_noiguales, no?
Yo no lo haría así. Haría otra función y la llamaría tras procesar(). Ya tienes el número de caracteres y el carácter, sólo habría que almacenar en la dirección de memoria correcta  ;)

Cita de: "manurodri189"
Bueno me he dispuesto a probarlo, y me salta el siguiente error al cargar el archivo:
El PcSpim no es un programa ejemplar que digamos  :lol: Quítale los espacios tras las comas.

1002
C/C++ / Re: Utilizacion de memoria de video
« en: Jueves 4 de Junio de 2009, 09:43 »
Se ve que ha sucedido algo raro y estás ejecutando datos, ya que si te fijas la instrucción que te da el error es "code "  :D.
Depúralo a ver dónde te equivocas. Y también mi consejo es que si vas a usar básicamente ensamblador (como en la función modo13h()), uses la función asm().

1003
ASM (Ensamblador) / Re: RLE en ensamblador MIPS
« en: Miércoles 3 de Junio de 2009, 10:12 »
Cita de: "manurodri189"
en $a0 tengo el primer caracter, para compararlo con el siguiente solamente tendría que compararlo con Entrance
Cita de: "manurodri189"
La comparacion no seria con entrance seria con $s0
Nop, tampoco  :P En $s0 tienes un puntero a un carácter, y en $a0 tienes un carácter. Tendrías que cargar el carácter en algún registro para compararlo. Lo que te aconsejo es que pases $s0 como parámetro a la función procesar():

Código: Text
  1. .data
  2. Entrance: .space 80
  3. encode1: .space 40
  4. encode2: .space 40
  5. decode: .space 80
  6. msg1: .asciiz "Please insert the String: "
  7. msg2: .asciiz " "
  8. msg3: .asciiz "n String encode like: "
  9. msg4: .asciiz "n String decode like: "
  10. .text
  11. .globl main
  12.  
  13. #
  14. # Main
  15. #
  16. main:
  17.     ori $v0,$zero,4
  18.     la $a0,msg1
  19.     syscall
  20.  
  21. #Almacenar el String en la matriz
  22. # Número de syscall
  23.     ori $v0,$zero,8
  24. # $a0 = buffer para guardar la cadena
  25.     la $a0,Entrance
  26. # $a1 = tamaño a leer
  27.     ori $a1,$zero,80
  28.     syscall
  29.  
  30. #Imprimir la matriz
  31. # Número de syscall
  32.     ori $v0,$zero,4
  33. # $a0 = buffer a imprimir
  34.     la $a0,Entrance
  35.     syscall
  36.  
  37. #
  38. # Codificar
  39. #
  40. start:
  41.     la $s0, Entrance  
  42. sig_carac:
  43.     lw $t0, 0($s0)
  44.     beq $t0, $zero, fin   # Si es el carácter de final de cadena, ya terminamos
  45.     add $a0,$zero,$t0     # Pasando el primer parámetro a la función procesar()
  46.     jal procesar  # Si no, llamamos a la función procesar()
  47.     addiu $a1,$s0,1    # Pasando el segundo parámetro a la función procesar()
  48.     beq $zero,$zero,sig_carac  # Siguiente carácter
  49.     addiu $s0,$s0,1            # Apuntamos al siguiente carácter
  50.  
  51. #
  52. # Exit
  53. #
  54. fin:
  55.     ori $v0,$zero,10   # Terminamos con exit
  56.     syscall
  57.  
  58. #
  59. # Procesar (habría que poner un nombre más explicativo :)
  60. #
  61. # Recibe un carácter y el puntero a una cadena
  62. # Cuenta cuántos caracteres iguales al pasado consecutivos hay en la cadena
  63. # Devuelve en $v0 el número de caracteres iguales
  64. # y en $v1 el puntero al primer carácter diferente encontrado
  65. procesar:
  66.     addiu $v0, $zero, $zero   # Inicializamos valores de retorno
  67.     addiu $v1, $zero, $a1
  68.     addiu $t1, $zero, $zero   # Contador de caracteres iguales consecutivos
  69. procesar_iguales:
  70.     lw $t0, 0($a1)  # Cargamos el siguiente carácter a comparar
  71.     bne $a0, $t0, procesar_noiguales  # Si no son iguales, terminamos
  72.     addiu $a1, $a1, 1 # Apuntamos al siguiente carácter    
  73.     beq $zero, $zero, procesar_iguales
  74.     addiu $t1, $t1, 1  # Si son iguales, aumentamos el contador en uno
  75.  
  76. procesar_noiguales:
  77.     add $v0, $v0, $t1   # Ponemos los valores de retorno
  78.     add $v1, $v1, $t1
  79. # Volvemos de la función
  80.     jr $ra
  81.     nop
  82.  
Esto empieza a ponerse más interesante, no?  :D Pruébalo a ver si funciona bien. Te aconsejo que pruebes paso a paso, así vas viendo lo que hacen las instrucciones, y ves los valores que hay en los registros, etc...

Otra cuestión: eso que has puesto de jal sig_caract dentro de procesar :huh: te va a montar follones como una casa. La función debe terminar con jr siempre.

1004
La taberna del BIT / Re: Salario de Congresista
« en: Martes 2 de Junio de 2009, 13:37 »
Aquí tienes la evolución de los sueldos con los diferentes presidentes colombianos. Seguro que César Gaviria también te cae bien, ya que son del mismo partido ¿cierto?

1005
C/C++ / Re: Comparando cadenas en un array de cadenas
« en: Martes 2 de Junio de 2009, 12:45 »
No entiendo cuál es el problema ni que aporte esperas  :P

1006
La taberna del BIT / Re: Salario de Congresista
« en: Martes 2 de Junio de 2009, 10:13 »
Cita de: "Jimbenit"
Uribe debe darle duro a estos politicos...!!!!!!!
:ph34r:  :ph34r:  :ph34r:  :huh:  :huh:  :huh:

Como siempre, andas muy desencaminado... En fin, te dejo pensar tú mismo, porque es que buscas respuestas donde no las hay.

PD: EEUU, España, Argentina, Colombia... ¿cuánto cobran en Venezuela, Bolivia, Cuba o Ecuador?

1007
C/C++ / Re: Problema redimensionando array de strings
« en: Martes 2 de Junio de 2009, 10:02 »
Cita de: "krnl64"
Basta con eso ?
Bueno, el free() lo haces a lista_temporal+i y el realloc() asigna a lista_temporal...

Cita de: "m0skit0"
Aunque yo no veo que uses realloc() :lol: ...
Vale, soy gilipollas...  <_<

1008
C/C++ / Re: Problema redimensionando array de strings
« en: Lunes 1 de Junio de 2009, 20:36 »
Cita de: "krnl64"
No se si estoy en lo cierto, pero creo que la linea 37 me sobra porque realloc ya libera esa memoria.
Estás en lo cierto a medias :D Sólo debes liberar el último puntero devuelto por realloc().

http://www.manpagez.com/man/3/realloc/

Aunque yo no veo que uses realloc()  :lol: ...

Saludos

1009
ASM (Ensamblador) / Re: RLE en ensamblador MIPS
« en: Lunes 1 de Junio de 2009, 20:30 »
:no: me parece que no has entendido cómo funcionan las llamadas al sistema con syscall...

Código: Text
  1. procesar:
  2. #Número de syscall
  3. ori $v0,$zero,4
  4. syscall
  5.  
  6. li $v0,4
  7. la $a0,msg2
  8. syscall
  9.  
  10. # Volvemos de la función
  11. jr $ra
  12. nop
  13.  
Esto es lo que has puesto en la función procesar. Ten en cuenta que los registros $aX se usan para pasar los parámetros a la función, siendo $a0 el primer parámetro, $a1 el segundo, etc... Pues nuestra función procesar recibe un solo parámetro, en $a0 como hemos dicho, y es el carácter (cuando hacemos add $a0,$zero,$t0 copiamos $t0 en $a0, y $t0 tiene el carácter que estamos procesando). Ahora, al hacer:

Código: Text
  1. ori $v0,$zero,4
  2. syscall
  3.  
al entrar en la función procesar, ¿qué estás haciendo? La llamada al sistema 4 imprime un cadena de caracteres, cuyo puntero es $a0. Pero en $a0... ¡¡tenemos un carácter (el código ASCII del carácter)!!. Y claro, en esa dirección de memoria no hay nada, por tanto no imprime nada  :P Y luego imprimes msg2 que es un espacio. Ahora la cuestión es ¿cómo imprimir un solo carácter si la única función que tenemos es para imprimir cadenas? No olvides que las cadenas acaban con un carácter nulo...

1010
C/C++ / Re: palabra aleatoria de un fichero
« en: Lunes 1 de Junio de 2009, 18:07 »
Cita de: "krnl64"
Puedes leer todas las palabras del fichero y almacenarlas en un array.
Esto te vale siempre y cuando el fichero no sea muy gordo. También puedes guardar un array de punteros de fichero, es decir, los desplazamientos dentro del fichero donde se encuentran las palabras. Menos memoria y no hace falta repetir la información (ya que las cadenas las tienes en el fichero)  ;)

1011
ASM (Ensamblador) / Re: RLE en ensamblador MIPS
« en: Lunes 1 de Junio de 2009, 17:49 »
Cita de: "manurodri189"
yo usaba la sentencia li entre el registro y el numero, vamos que supongo que es lo mismo.
Bueno, li es una pseudoinstrucción, es decir, realmente no existe como tal, sino que se traduce en 2 instrucciones: lui + ori. Si te fijas en el código que ejecuta el SPIM lo verás. De todas formas, no importa mucho, hazlo como mejor te venga, aunque es útil practicar con varias formas porque así se coge más soltura con ensamblador  ;)

Cita de: "manurodri189"
Ahora se supone que en Entrance, tengo el String, no es asi?
Sí señor  ^_^ después del primer syscall que puse.

Cita de: "manurodri189"
pero para acceder al primer elemento del string, puedo acceder a el inmediatamente o tengo que hacer un desplazamiento asi
No, para el primer elemento no debes hacer ningún desplazamiento. Entrance es un puntero al primer carácter de la cadena. Puedes acceder a él así, por ejemplo:

Código: Text
  1. # Puntero de cadena a $s0
  2. la $s0,Entrance
  3. # Cargamos el primer carácter en $s0
  4. lw $t0,0($s0)
  5.  
Ojo, si tienes puesto el "delayed load" como opción en el PCSPIM, el registro destino de las instrucciones load (lw, lb, etc...) tardará una instrucción más en cargarse. Con poner un nop después del load lo apañas.

Para ir accediendo a todos los caracteres de la cadena, es bastante fácil (supondré que no hay "delayed load", pero sí "delayed jump"):

Código: Text
  1. start:
  2. la $s0, Entrance  
  3. sig_carac:
  4. lw $t0, 0($s0)
  5. beq $t0, $zero, fin   # Si es el carácter de final de cadena, ya terminamos
  6. nop
  7. la procesar,$v0
  8. jal $v0               # Si no, llamamos a la función procesar()
  9. add $a0,$zero,$t0     # Pasando el primer parámetro a la función procesar()
  10. beq $zero,$zero,sig_carac  # Siguiente carácter
  11. addiu $s0,$s0,1            # Apuntamos al siguiente carácter
  12. fin:
  13. nop
  14.  
  15. procesar:
  16. [...]
  17. # Volvemos de la función
  18. jr $ra
  19. nop
  20.  
PD: todo esto lo escribo ahora de pasada, está sin probar, así que si falla algo, dímelo  :P

1012
ASM (Ensamblador) / Re: RLE en ensamblador MIPS
« en: Lunes 1 de Junio de 2009, 12:49 »
Cita de: "manurodri189"
syscall es una llamada al sistema, que por lo que veo, lo que hace depende de la sentencia anterior.
Bueno, te aclaro. syscall no hace lo que dice la sentencia anterior. Funciona así: http://www.inf.pucrs.br/~eduardob/disci ... codes.html

Volviendo a tu código, generalmente se pone la sección de datos depués de la de texto (código), pero bueno, no importa. Para leer una cadena, fíjate en la tabla la llamada número 8. Debes poner en $a0 la dirección del buffer y en $a1 en número de caracteres que se van a leer + 1, algo que no haces, y que vendría a ser:

Código: Text
  1. # Número de syscall
  2. ori $v0,$zero,8
  3. # $a0 = buffer para guardar la cadena
  4. la $a0,Entrance
  5. # $a1 = tamaño a leer
  6. ori $a1,$zero,80
  7. syscall
  8.  
Ahora ya tienes almacenada la cadena (máximo 80 caracteres) en Entrace. Para imprimirla, es el syscall 4 con la dirección de la cadena en $a0, por tanto:

Código: Text
  1. # Número de syscall
  2. ori $v0,$zero,4
  3. # $a0 = buffer a imprimir
  4. la $a0,Entrance
  5. syscall
  6.  

Cita de: "manurodri189"
Tiene buena pinta no?
:good:

1013
ASM (Ensamblador) / Re: RLE en ensamblador MIPS
« en: Lunes 1 de Junio de 2009, 12:22 »
A ver, primero... ¿Estás usando un simulador de MIPS (PCSPIM ¿?), o cómo? Porque entonces tienes que explicarme qué hace cada syscall, o postear la documentación del manejador de excepciones, que no soy adivino  :D

1014
C/C++ / Re: sobrecargar operador []
« en: Lunes 1 de Junio de 2009, 10:42 »
Lógico, en el segundo ejemplo que pones, Reg es un puntero, no es un objeto GRegister. Prueba con

Código: C++
  1. std::string value = *Reg["Root"];
  2.  
A ver qué tal

1015
C/C++ / Re: Error en función y no se por qué
« en: Lunes 1 de Junio de 2009, 10:03 »
Cita de: "krnl64"
La duda que me queda es qué es más recomendable el memcpy o el strncpy.
Depende. memcpy() copia bytes, sin importarle nada más. strncpy() actúa como copia de cadenas de caracteres, esto es, si encuentra un byte nulo en el buffer origen, a partir de ahí ya rellena con ceros el buffer destino hasta completar el tamaño requerido.

Usa memcpy() para copiar buffers y strncpy() para cadenas de caracteres.

Saludos

1016
C/C++ / Re: Arreglos unidimensionales!
« en: Lunes 1 de Junio de 2009, 09:57 »
Explícate un poco mejor, por favor, no he entendido cuál es el problema...

1017
C/C++ / Re: como hacer que un vertice apunte mas de uno sin perde su inf
« en: Lunes 1 de Junio de 2009, 09:54 »
Asigna una lista dinámica con los vértices a los que apunta a cada uno de los vértices.

1018
Servidores / Re: Propio web server en ubuntu 8.10?
« en: Domingo 31 de Mayo de 2009, 14:41 »
Primero, antes de coger cualquier dominio, fíjate en que tu servidor funciona correctamente. Abre el navegador y pon en la barra de direcciones (no te hace falta saber tu IP  ;) ): localhost (o 127.0.0.1 si quieres ser muy friki  :lol: ). Ahí te debería aparecer la página de prueba de Apache. Ojo, esto sólo te sirve desde tu propio PC, no desde otro.

Para el dominio, ya te comenta locazopro, y no olvides configurar el hardware como bien dice F_Tanori.

1019
Pascal / Re: Help Suma de 3 numeros en Hexadecimal
« en: Domingo 31 de Mayo de 2009, 14:36 »
Vaya follón :P

Aer, ¿qué necesitas hacer exactamente? Me parece que con este código te vas por las ramas un poco...

1020
C/C++ / Re: Arreglos unidimensionales!
« en: Domingo 31 de Mayo de 2009, 14:33 »
Cita de: "Sankara"
bueno en primer lugar el vector no lo declaras bien
vector<int> v(50); debería ser así para darle tamaño 50 y no con corchetes, los corchetes son el operador de acceso a los elementos
Falso. Puedes declarar perfectamente un vector de enteros de tamaño 50 así: int v[50]

Basándonos en esto, las declaraciones de funciones: void promedio(int v[],int n).

1021
C/C++ / Re: una consulta sobre el siguiente programa
« en: Domingo 31 de Mayo de 2009, 14:31 »
Cita de: "pacorubio77"
El objetivo de utilizar memoria dinámica es porque las posiciones de v que no se ocupan se pueden borrar?, la asignacion y todol o demás es idéntico que con los vectores estáticos?
No, las variables locales se reservan en la pila, la asignación de memoria se reserva del montículo (heap).

Cita de: "pacorubio77"
ahora estoy reservando 100 posiciones para un TAfd, pero las que no se usan, tengo que hacer delete?
Si la reservas en lo mismo que usarla y por tanto debes hacer delete. Si no las usas, no las reserves y asi optimizas tu programa.

Cita de: "pacorubio77"
ahora como lo meto como parámetro? tengo que cambiar la notacion ?cual sería la correcta?
No hay diferencia con antes.

1022
Servidores / Re: Propio web server en ubuntu 8.10?
« en: Sábado 30 de Mayo de 2009, 20:46 »
Una palabra: APACHE

1023
C/C++ / Re: Descomponer un numero en sus factores
« en: Sábado 30 de Mayo de 2009, 20:45 »
Bueno, yo tampoco pretendo que seas Stallman, pero me refería a esto:

Código: Text
  1. if(valor==49)
  2.     *cadena1=1;
  3. if(valor==50)
  4.     *cadena1=2;
  5. if(valor==51)
  6.     *cadena1=3;
  7. if(valor==52)
  8.     *cadena1=4;
  9. if(valor==53)
  10.     *cadena1=5;
  11. if(valor==54)
  12.     *cadena1=6;
  13. if(valor==55)
  14.     *cadena1=7;
  15. if(valor==56)
  16.     *cadena1=8;
  17. if(valor==57)
  18.     *cadena1=9;
  19. if(valor==58)
  20.     *cadena1=0;
  21.  
¿No ves que valor - 48 te da el resultado que quieres sin necesidad de tantas comparaciones? Así reduces considerablemente el número de comparaciones. ¿Te fijaste en el código que te puse?

1024
Hardware / Re: ¿ Qué Opinan de este Pc ?
« en: Sábado 30 de Mayo de 2009, 12:59 »
Vamos a ver...  &lt;_&lt;

Cita de: "Holmes"
Algunos dicen que programar es para Intel
A quien te haya dicho eso ya le puedes ir metiendo un buen par de collejas  :lol: . Para programar da lo mismo el procesador, incluso un 386 te tiraría bien, porque no creo que vayas a programar un simulador médico o astrofísico... en cuyo caso no te valdría ni uno ni otro  :lol:

Cita de: "Holmes"
y los gráficos se lo dejamos al AMD
Para los gráficos necesitas principalmente una buena tarjeta de vídeo. El procesador influye, cierto, pero sobre todo es importante una buena tarjeta gráfica ya que hoy en día los juegos tiran de la GPU. No hay buena tarjeta, no hay buenos juegos, esto es así. Así que ve incluyendo en tu gasto esto, que te puede costar unos 100$ una medianamente buena  :blink:

Cita de: "Holmes"
Memoria Kingston DDR2 2GB 800
Si tienes para gastar un poco más, coge una placa base DDR3 y memoria DDR3, lo agradecerás en los tiempos de carga y la velocidad en general.

Cita de: "Holmes"
no tengo mucho de haber oído sobre tarjetas Madre MSI
Son buenas, yo tengo una y tira perfectamente. Vamos, tira de  :beer:  :P

Cita de: "Holmes"
tampoco estoy seguro de si me combiene un procesador AMD.
La diferencia entre Intel y AMD es que Intel siempre lleva ligeramente la delantera tecnológica, aunque AMD suele tener procesadores que a igual velocidad tienen más rendimiento, aunque eso sí, se calientan bastante más que los de Intel.

1025
C/C++ / Re: Programa retorna al menu despues de intentar usarlo 2 veces
« en: Sábado 30 de Mayo de 2009, 12:50 »
Inicializa el valor de m...

Páginas: 1 ... 39 40 [41] 42 43 ... 100