Skip to content

tectijuana/interfaz

Repository files navigation

wallpaper_itt

Lenguajes de Interfaz (Assembly Language)

Repositorio oficial del curso Lenguajes de Interfaz. Aquí encontrarás materiales, ejemplos y prácticas relacionadas con programación en ensamblador y lenguajes de bajo nivel para arquitecturas ARM (32/64 bits) y RISC‑V.

🎯 Objetivos del curso

  • Comprender el funcionamiento de microprocesadores ARM y RISC‑V a nivel de registros e instrucciones.
  • Aplicar convenciones de llamadas (ABI) y preservación de contexto en rutinas.
  • Programar rutinas en ensamblador para operaciones aritméticas, manejo de memoria y periféricos.
  • Desarrollar prácticas de laboratorio con simuladores y hardware real.

🗂 Estructura del repositorio

interfaz/
├── README.md            ← Presentación del curso
├── SYLLABUS.md / SCHEDULE.md / GRADING.md ← Programa, calendario y evaluación
├── AI_GUIDANCE.md       ← Uso responsable de IA en el curso
├── CLAUDE.md            ← Instrucciones para agentes (tutor, no solucionador)
├── CONTRIBUTING.md      ← Guía para colaborar (entrega por Pull Request)
├── docs/                ← Entorno, herramientas (gdb/GEF, tmux), recursos PDF,
│                          lecturas avanzadas (caché, virtualización, SO)
├── units/               ← Unidades U01–U04 del temario, con lecturas y sesiones
├── practicas/           ← Prácticas verificables (Makefile + make test en tu entorno)
├── templates/           ← Plantillas de práctica, rúbricas y formatos
├── herramientas/        ← Utilerías del docente (recolector de Gists para calificar)
└── entregas/            ← Entregas históricas de alumnos (referencia interna)

📘 Contenidos

  • ARMv7 y ARMv8 (32/64 bits): instrucciones, modos de direccionamiento, ABI.
  • RISC‑V (RV32I): panorama comparativo y retos opcionales (el curso se centra en ARM).
  • Convenciones: preservación de registros, stack frames, llamadas C ↔ ASM.
  • Interrupciones y E/S mapeada.

💻 Requisitos previos

  • Conocimientos básicos de arquitectura de computadoras y del sistema operativo Linux Ubuntu (opcional Docker con Alpine Linux)
  • Experiencia con programación básica en C y MicroPython
  • Familiaridad con herramientas como gcc, as, ld, qemu o simuladores de RISC‑V.

🧭 ¿Qué entorno me toca?

Todas las prácticas corren en Linux ARM64; elige la ruta según tu equipo:

Tu situación Ruta recomendada
Cualquier laptop (opción del curso) AWS EC2 Graviton vía AWS Academy + script de setup
Raspberry Pi propia Setup nativo directo en la Pi
PC x86 (Windows/Linux) sin nube Docker + toolchain cruzado y QEMU
Solo teléfono Android Termux
Solo iPhone/iPad Acceso remoto por VPN

Más detalles de entornos y herramientas en docs/.

💻 Materiales

  • Raspberry Pico 2W (versión 2025) con cable USB–microUSB (~$8 USD): se usa en las prácticas de hardware de la Unidad 4; el grupo se organiza para la compra masiva y el descuento los beneficia a Uds.
  • Cuenta en un asistente de IA: ChatGPT gratuito, o el plan con anuncios ChatGPT Go (~$8 USD/mes), u otro LLM equivalente.
  • Para el proyecto final: acceso a API de LLM con saldo de ~$5 USD, o una alternativa gratuita (se avisa en clase cuando se necesite).

📚 Bibliografía recomendada

  • ARM Architecture Reference Manual.
  • Patterson & Hennessy – Computer Organization and Design RISC‑V Edition.
  • Sloss, Symes & Wright – ARM System Developer’s Guide.
  • Rizzi LLM Chat — asistente bot de programación con 10 libros integrados de ARM64

🤝 Contribuciones

Consulta la guía CONTRIBUTING.md para aportar mejoras.

🔎 Uso responsable de IA

Este curso cuenta con la guía AI_GUIDANCE.md, donde se explica cómo usar Inteligencia Artificial como apoyo didáctico sin sustituir el aprendizaje experimental ni comprometer la honestidad académica.


📣 Este curso es parte del esfuerzo por ofrecer materiales abiertos en ingeniería desde Latinoamérica. ¡Tu colaboración es bienvenida!

About

Lenguajes de Interfaz (Assembly Language for ARM / RISCV)

Topics

Resources

License

Code of conduct

Contributing

Stars

19 stars

Watchers

4 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors