elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Qué quiere decir "...permite al programador abstraerse de la capa hardware"?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Qué quiere decir "...permite al programador abstraerse de la capa hardware"?  (Leído 1,782 veces)
theluigy13etv

Desconectado Desconectado

Mensajes: 179


Primero se hace, después se mejora


Ver Perfil
¿Qué quiere decir "...permite al programador abstraerse de la capa hardware"?
« en: 13 Marzo 2012, 20:50 pm »

Citar
El lenguaje C es fruto de un lenguaje de programación anterior, el lenguaje B, desarrollado por Ken Thompson, en los Laboratorios Bell en 1970, con la idea de recodificar el sistema operativo UNIX que, hasta esa fecha, se programaba directamente en ensamblador, con el inconveniente de estar vinculado a máquinas concretas (según el juego de instrucciones de cada máquina). Por tanto, se hacía necesario un lenguaje que permitiese al programador abstraerse de la capa hardware y conseguir una mayor portabilidad del código, algo que se realizó en B (basándose en el BCPL de Martin Richard de 1967).

Siempre, en todos los textos que traten acerca del lenguaje C, encuentro que hacen referencias al lenguaje ensamblador, y de que el lenguaje ensamblador depende de la máquina. ¿Por qué depende de la máquina?...Además que el lenguaje C es portable. ¿Alguien que explique un poco más esto?


En línea

nirvguy

Desconectado Desconectado

Mensajes: 23



Ver Perfil
Re: ¿Qué quiere decir "...permite al programador abstraerse de la capa hardware"?
« Respuesta #1 en: 13 Marzo 2012, 23:32 pm »

Porque cuando usas assembler utilizas las instrucciones de la arquitectura en la que estás, aunque hay estandares (desde el 8086, si no me equivoco, antes lo que programabas era solo para tu maquina porque todas las arquitecturas eran diferentes). Hablo de arquitectura tanto como hardware (instrucciones que solo sirven en tu micro, si es que las usas), como de plataforma (16, 32,  64 bits, no es lo mismo redireccionar con 16 bits, que con 32, que con 64), asi como tambien de sist op, cada sist operativo tiene sus interrupciones a nivel de software y en cada uno es diferente, por ejemplo para imprimir la pantalla en linux utilizas 0x21 y en windows 0x80. En cambio C es mas portable porque no se vale de esas caracteristicas especificas. Es decir, en C, si compilas un programa que imprime en pantalla, si lo haces en Linux, por ejemplo, gcc usara la interrupcion 0x21. Por otra parte si lo compilas en windows, MinGW usara la interrupcion (0x80, como te habia dicho). Ademas C tiene un sistema de macros que te permite especificar que codigo va para tal sist op, para tal arquitectura, o para 32 o 64 bits. Pero igual todo lenguaje no interpretado termina en codigo máquina.
Espero haberte ayudado y que alguien me corriga si me equivoco.


En línea

Todas mis letras han sido pedazos de poesía y los pedazos de poesía se toman de poemas que comúnmente no tienen sentido
en primer termino.
               Kurt Cobain
Eternal Idol
Moderador
***
Desconectado Desconectado

Mensajes: 5.729


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: ¿Qué quiere decir "...permite al programador abstraerse de la capa hardware"?
« Respuesta #2 en: 14 Marzo 2012, 00:21 am »

Windows 0x21 y Linux 0x80, igual hace largo rato que Windows usa sysenter/syscall.

theluigy13etv: http://en.wikipedia.org/wiki/Assembly_language
« Última modificación: 14 Marzo 2012, 00:23 am por Eternal Idol » 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
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines