Autor
|
Tema: Hardware y C/C++ (Leído 7,151 veces)
|
lcclps
Desconectado
Mensajes: 2
|
Buenos días/tardes/noches usuarios. Como bien sabemos todos, un buen conocedor de ASM puede controlar el hardware del PC, casi a su antojo, si no fuera por lo pesado y/o complejo que puede llegar a ser trabajar en ASM. Además, de la pesada tarea de traducir el ASM de un procesador al de otro, para que tu código funcione en dos maquinas diferentes. Sin embargo, hace poco recuerdo haber leído por internet, que en C, también se pueden hacer todo lo que puedes hacer en ASM. - Sinceramente, discrepo de eso del "todo", pero.... quizás no es que no se pueda hacer todo, si no, que yo no se hacerlo. Y a todo eso..... ¿Sabeis si en C se puede controlar el Hardware, sin necesidad de hacer uso de ASM en ningún momento? [/i] Y me refiero a.. control "avanzado", como por ejemplo: controlar el ventilador, ya sea su velocidad, o el simple hecho de que esté encendido o no. - Gracias de antemano.
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
No es parte del standard aunque hay formas (inline assembly o libreria en assembly por ejemplo).
Igual ni assemby ni C/C++ podran acceder directamente al hardware en un S.O. moderno desde modo Usuario.
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
lcclps
Desconectado
Mensajes: 2
|
No es parte del standard aunque hay formas (inline assembly o libreria en assembly por ejemplo).
Igual ni assemby ni C/C++ podrán acceder directamente al hardware en un S.O. moderno desde modo Usuario.
Hum... solamente, en usuario Root, entonces? - Bueno si, tendría su lógica, en plan "sistema de seguridad".. Pero utilizando librerías asm.... no solucionaría el problema de la potabilidad de aplicaciones... por que seguiría dependiendo de que la librería esté hecha para procesador X o procesador Y...u.u - No se para que miro en Yahoo respuestas... es donde leí eso de que en C se puede hacer todo y portable.
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
Hum... solamente, en usuario Root, entonces? - Bueno si, tendría su lógica, en plan "sistema de seguridad"..
No, me refiero al nivel de privilegio con el que ejecuta el codigo, para acceder directamente necesitas un modulo de modo Kernel (un driver) y no un programa de modo Usuario. Pero utilizando librerías asm.... no solucionaría el problema de la potabilidad de aplicaciones... por que seguiría dependiendo de que la librería esté hecha para procesador X o procesador Y...u.u Si el recurso esta expuesto como un archivo no es tan complejo y podes usar compilacion condicional pero lo que es acceder DIRECTAMENTE al hardware es por pura logica una operacion de bajo nivel totalmente dependiente de la arquitectura. - No se para que miro en Yahoo respuestas... es donde leí eso de que en C se puede hacer todo y portable. Por definicion C/C++ son portables, siempre que recompiles para cada una de las arquitecturas que quieras soportar ... si usas extensiones no standard no lo es y ahi entra la compilacion condicional.
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
C puede acceder directamente a la memoria, los punteros le dan esa capacidad. Si la máquina mapea el hardware a la memoria C puede acceder así al hardware, pero eso no es portable ya que depende de cada arquitectura. Si el acceso al hardware no es por memoria C ya no puede acceder a él y se deben usar funciones escritas en ensamblador expresamente para dotar al programa de ese acceso. Y todo esto en un sistema sin el modo protegido, en caso contrario hay que solicitar permiso al S.O. o cambiar de anillo en el procesador mediante unos códigos ASM específicos.
|
|
|
En línea
|
|
|
|
Zekkk
Desconectado
Mensajes: 10
|
No entiendo a que te refieres por "acceder al hardware" pero con C/C++ puedes hacer todo lo que puedes hacer con assembly. De hecho la mayoria de compiladores de C/C++ traducen el codigo a assembly. Tambien tu sistema operativo(si usas windows o linux) esta escrito en C con una que otra optimizacion escrita en assembly(el compilador no siempre traduce las cosas de la forma mas eficiente).
En todo caso si quieres controlar la velocidad del ventilador entonces usa la libreria correspondiente del sistema operativo que sea que uses. Si quieres "completo control" sobre el hardware de tu computadora prueba modificar alguna distribucion de linux usando C.
Ese es el tema o me equivoco?
|
|
|
En línea
|
|
|
|
Stakewinner00
|
De hecho la mayoria de compiladores de C/C++ traducen el codigo a assembly. Cualquier compilador genera un ejecutable en ensamblador, sino ya no sería un compilador. Pero no es lo mismo el ensamblador para un intel que para un arm por ejemplo. Tambien tu sistema operativo(si usas windows o linux) esta escrito en C El kernel de Linux esta en C, el de Windows creo que estaba en C++ si no recuerdo mal, pero bueno. básicamente, el sistema operativo hace de intermediario con el hardware, este intermediario facilita muchas tareas pero a la hora de hablar directamente con el hardware es un problema. espero que esto ayude https://es.wikipedia.org/wiki/Anillo_%28seguridad_inform%C3%A1tica%29
|
|
« Última modificación: 19 Enero 2016, 01:15 am por Stakewinner00 »
|
En línea
|
|
|
|
Zekkk
Desconectado
Mensajes: 10
|
Cualquier compilador genera un ejecutable en ensamblador, sino ya no sería un compilador.
Para nada. No todos los compiladores traducen el codigo a assembly. Cfront por nombrarte un ejemplo no lo hacia.
|
|
|
En línea
|
|
|
|
Stakewinner00
|
Cfront convertía C++ a C, yo diría que es más un traductor¿? Pero bueno, quizás me exprese mal.
|
|
« Última modificación: 19 Enero 2016, 01:21 am por Stakewinner00 »
|
En línea
|
|
|
|
Zekkk
Desconectado
Mensajes: 10
|
Todos los compiladores son "traductores".
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
FS9 hardware
Juegos y Consolas
|
deadisend
|
0
|
1,903
|
11 Noviembre 2005, 19:45 pm
por deadisend
|
|
|
ID Hardware (Hardware protection)
Seguridad
|
kity54
|
5
|
7,207
|
12 Diciembre 2011, 17:12 pm
por kity54
|
|
|
ID Hardware (Hardware protection)
Ingeniería Inversa
|
kity54
|
0
|
3,294
|
17 Diciembre 2011, 23:02 pm
por kity54
|
|
|
hardware php
PHP
|
kakashi20
|
3
|
2,139
|
7 Marzo 2013, 16:33 pm
por kakashi20
|
|
|
Enmascaramiento de IDs de hardware
Hacking
|
kaitohh
|
2
|
3,689
|
16 Agosto 2021, 19:34 pm
por kaitohh
|
|