No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Arquitectura de programas en C

6/18
Recursos

Aportes 13

Preguntas 2

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

Hay una instrucci贸n que he notado que es muy com煤n que este antes de las de 鈥渃ontrol flow鈥 es la de CMP, comparar. Otra que he visto es INC de incrementar.

Instrucciones comunes en ensamblador.

Con calma, se puede entender, solo hay que repasar esta clase un par de veces y complementar

Algunas notas de la clase
Fases de compilacion en C :
Pre-procesamiento -> Compilacion -> Assembly -> linking

PE Files(Portable Executable):
~el formato de windows PE describe la estructura de los archivos de windows modernos como .exe,.dll y .sys
~Contiene informacion,recursos y diferencias hacia DLL鈥檚(librerias/bibliotecas de enlace dinamico)
~define la manera en que se almacenan los datos contenido instrucciones x86,imagenes,textos y metadatos que un programa necesita para funcionar y ejecutarse

Fue dise帽ado para:
~Decirle a window como cargar un programa en la memoria
~proporcionar los medios o recursos que un programa al ejecutarse podria utilizar.
~proporcionar los medios o recursos que un programa al ejecutarse podria utilizar.
~proporciona datos de seguridad como codigo de firmas digitales

Muy importante

Comparto una peque帽a simplificaci贸n espero les sirva:

  • Punteros: Imagina que la memoria de la computadora es un enorme bloque de casilleros, cada uno con una direcci贸n 煤nica. Un puntero es como una nota que tiene escrita la direcci贸n de uno de esos casilleros. As铆, puedes encontrar lo que hay en ese casillero particular mirando la direcci贸n en tu nota.

  • Biblioteca de v铆nculos din谩micos (DLL): Es como una caja de herramientas que tu programa puede utilizar. En lugar de llevar todas tus herramientas contigo todo el tiempo, vas a la caja (DLL) y tomas la herramienta (funci贸n) que necesitas cuando la necesitas. Los punteros ayudan a tu programa a saber d贸nde encontrar cada herramienta (funci贸n) en la caja (DLL).

  • M茅todos virtuales y tabla de m茅todos virtuales: En la programaci贸n orientada a objetos, los m茅todos virtuales son como reglas generales que puedes cambiar para adaptarse a situaciones espec铆ficas. La tabla de m茅todos virtuales es como un directorio que le dice a tu programa qu茅 versi贸n espec铆fica de la regla general usar en cada situaci贸n. Nuevamente, los punteros ayudan a tu programa a encontrar la versi贸n correcta de la regla.

tuve que repetir la clase varias veces, mi cabeza exploto, pero se siente bien cuando empiezas a entender

Lo siento no lo pude evitar鈥
鈥 Aseembly y la programaci贸n en C son considerados de un nivel m谩s cercano al ser humano es interpretado por un compilador que convierte el c贸digo a instrucciones de maquina y al utilizar una herramienta de densamblador puedes obtener el lenguaje ensamblador de un programa C compilado.

f![](

Una lastima que el curso no tenga un pdf con las slide del curso hay unos cuantos principios aqui que memorizar

La arquitectura de programas en C se refiere al dise帽o y la estructura de c贸mo se organizan y se implementan los programas escritos en el lenguaje de programaci贸n C. Dado que C es un lenguaje de programaci贸n de prop贸sito general, de bajo nivel y con una sintaxis relativamente simple, ofrece a los desarrolladores una gran flexibilidad para estructurar sus programas de manera eficiente y efectiva. La arquitectura de un programa en C implica la organizaci贸n de c贸digo en funciones, m贸dulos, archivos y el uso adecuado de variables globales y locales, tipos de datos, y estructuras de control. A continuaci贸n, se describen algunos aspectos clave de la arquitectura de programas en C. ### **Estructura B谩sica de un Programa en C** Un programa t铆pico en C comienza con la definici贸n de librer铆as necesarias, seguido de la declaraci贸n de variables globales, la definici贸n de funciones, y finalmente, la funci贸n `main()`, que es el punto de entrada del programa. cCopy code \#include \<stdio.h> // Inclusi贸n de una biblioteca est谩ndar// Declaraci贸n de variables globales int globalVariable; // Declaraci贸n de funciones void exampleFunction() { // C贸digo de la funci贸n } int main() { // C贸digo del programa principal return 0; // Indica que el programa termin贸 con 茅xito } ### **Modularizaci贸n y Organizaci贸n del C贸digo** * **Funciones:** permiten dividir el c贸digo en bloques reutilizables y aut贸nomos que realizan tareas espec铆ficas. Las funciones pueden recibir datos a trav茅s de par谩metros y retornar un valor. * **Archivos de cabecera (.h):** se utilizan para declarar la interfaz de los m贸dulos, como prototipos de funciones, definiciones de tipos de datos y macros. Facilitan la separaci贸n entre la implementaci贸n de las funciones y su uso en otros archivos. * **Archivos de implementaci贸n (.c):** contienen la definici贸n de funciones y variables. Los programas se pueden dividir en m煤ltiples archivos de implementaci贸n para mejorar la organizaci贸n y facilitar la mantenibilidad. ### **Principios de Dise帽o** * **Encapsulamiento:** cada m贸dulo o funci贸n debe ser responsable de una parte espec铆fica de la funcionalidad del programa, con una clara interfaz y separaci贸n de las dem谩s partes del programa. * **Cohesi贸n:** los elementos dentro de un m贸dulo o funci贸n deben estar estrechamente relacionados y trabajar juntos hacia un objetivo com煤n. * **Acoplamiento:** los m贸dulos y funciones deben estar lo menos dependientes posible entre s铆, comunic谩ndose a trav茅s de sus interfaces bien definidas. ### **Gesti贸n de Memoria** C ofrece un control manual de la gesti贸n de memoria, lo que significa que los programadores deben asignar y liberar memoria expl铆citamente utilizando funciones como `malloc`, `calloc`, `realloc`, y `free`. Esto permite una gran flexibilidad y eficiencia, pero tambi茅n impone la responsabilidad de evitar fugas de memoria y otros errores relacionados. ### **Uso de Punteros** Los punteros son una herramienta poderosa en C, permitiendo manipular direcciones de memoria directamente. Son esenciales para la gesti贸n din谩mica de la memoria, la implementaci贸n de estructuras de datos complejas y la manipulaci贸n de arrays y cadenas de caracteres. ### **Estilo de Codificaci贸n y Normas** Adherirse a un estilo de codificaci贸n coherente y a las mejores pr谩cticas es crucial para mantener el c贸digo legible, mantenible y seguro. Esto incluye la correcta indentaci贸n, nombrar variables de manera significativa, y documentar el c贸digo a trav茅s de comentarios.
En cuanto a punteros, Todos los lenguajes los utilizan, JS, Python, Java, C#, Rust, Go, Todos. Simplemente que en C los tienes que apuntar y modificar tu, y en los dem谩s, el lenguaje lo hace por nosotros, si desean conocer mas, busquen acerca de Estructuras de Datos. El curso de Diego de Granda Estructuras de Datos con JavaScript es muy bueno.

Por aqu铆 quien programo microcontroladores en lenguaje assembler?