Que no hombre, ASM require saber poco mas de mates de lo que requiere C++. Cuando por ejemplo se trata con punto flotante de single o double precision.
Pero de ajedrez(logica), requiere muchisimo, y mucha concentracion en cada momento sobre lo que uno hace. Como es el ejemplo de usar los MMX y el FPU a la vez.
Compatibilidad - la mas baja. En C solo cambias de compilador y raras veces modificas el codigo. En ASM igual en el peor caso tienes que cambiar lo todo. Este es su contra mas importante, luego es el aprendizaje, que cuesta mas tiempo que aprender otros lenguajes.
Su pros-el mas importante: el rendimiento, la optimizacion, acercarse uno mas a la subconciencia del ordenador.
Montarlo-Es mas facil de montar que visual studio.
Que porque usarlo, no lo se.... Yo lo uso, porque me pone menos de los nervios que un compilador con sus tropecientas opciones de configuracion e issues. Cada uno es distinto, y a mi me lleva menos tiempo programar algo en ASM que algo en alto lenguaje con los malditos compiladores.
PD:
Citar
PD: ¿Es muy alto ese nivel de matemáticas del que hablan?, xq yo solo se que 2+2=5
Cuando me da pereza abrir la calculadora de windows, simplemente pongo algo como:
Hola! Hay algo que me quita el sueño. En el siguiente video de youtube, en el minuto 3, el segundo, 25, ¿Se ve algo interesante o tan solo me lo parece?
Si, vale la pena. Personalmente yo no comprendi los lenguajes de alto nivel hasta que me meti con ASM. Y no se porque todos asocian lo de programar con las mates, que mira, yo en mates soy un desastre, pero no me impide desarrollar me en programacion. En fin que uno tiene Math.algo(valor) es que ni hace falta saber de mates. El ASM mas que cosa de mates es para mi cosa de la logica, cosa de agedrez digamos. Pero bueno, tu dedica tu tiempo a lo que quieras.
Saludos
PD: No compres ningun libro de 16 bits, hombre. Que eso es ya pasado en la historia. Puedes aprender directamente un libro de 32+ bits y comprenderas de paso lo de 16 bits. En fin, que no me viene a la cabeza ningun uso de 16 bits, uso util vamos....
mov AX, 0 mov DS, AX mov BX, 0B8000h mi_apodo: db "Binary_Death" fin_mi_apodo: mov CX, mi_apodo imprimir_mi_apodo: mov AL, [DS:CX] mov byte [DS:BX], AL add BX, 2 inc CX cmp CX, fin_mi_apodo jne imprimir_mi_apodo ;Aqui sales del entorno como te dice el libro
Eso si, tal vez debas calcular una que otra direcciones de memoria, pero ahi no te puedo ayudar mucho, porque no trato con entorno de OS, y nunca me he interesado por como se debe hacer.
This is consistent with the AMD documentation and most other assemblers. The Intel documentation, however, uses the names R8L-R15L for 8-bit references to the higher registers. It is possible to use those names by definiting them as macros; similarly, if one wants to use numeric names for the low 8 registers, define them as macros. The standard macro package altreg (see section 5.1) can be used for this purpose.
Eso explica supongo los problemas que tengo. En la documentacion de Intel no es mas claro que eso.
Total, puesto que para usar un registro R* de menos bits, casi siempre se me desusa el registro entero, pues simplemente voy a evitar esos low bits references.
Hoy me he perdido todo el dia antes de intentar probar por bugs y si:
Lo que ocure es que cuando uso codigo de 64 bits en modo de la CPU de 64 bits, con NASM, no me van bien los registros DIL, SIL, no he probado con los AL.... o BPL SPL, porque no tengo tiempo. Por ahora voy a cambiar todo el codigo en donde uso por ejemplo mov AL, DIL, con mov AX, DI y para las demas instrucciones lo mismo voy a hacer para que funcione, si no, no va. No me reinicia ni nada, tampoco provoca interrupciones, simplemente el programa se vuelve impredecible.
Bueno, a ver si a alguien otro le ha ocurrido lo mismo.
La cosa es que tengo muchos problemas con el PCI bus. Me he bajado el .zip de KolibriOS, pero bueno, eso solo el que lo ha escrito lo comprende. Me refiero no al ASM en si mismo, si no, a la forma de crear los sources- una hoja incluye otra, y la hoja incluida incluye otra, y cuando llego a buscar una función, me cuesta un sinfin encontrarla.
¿Tendrá alguien algun linc o ejemplo de codigo de cómo enumerar los PCI-s?
Yo accedo solo a los devices conectados al bus 0. Leo sus registros etc. Pero no consigo hacer que me dejen pasar mensajes de configuracion a los siguientes buses en el sistema.
Encima, el hardware me reporta cosas que no entiendo bien: En el bus 0 tengo conectado PCI-ISA(¿lo debo tratar como un PCI-PCI normal?), luego Host-PCI(¿lo debo tocar para algo?), y dos devices normales me reportan IRQ-s altos por encima de los 50. De echo, el ordenador no me reporta ningun PCI-PCI bridge. (0604h class code)
Si no teneis codigo o links, al menos, respondan me unas cosas si pueden: Con que configure los bus:primary,secondary y subordinate,¿es suficiente para que el PCI-PCI me pase palante los mensajes de configuracion, o debo hacer algo mas?
¿Cuándo debo mandar por el bus mensajes de configuracion de tipo 0?Cuando mando mensaje tipo 0 el bus 0, no me reporta ningun device.