Practicas Unidad 1 - JoseCorreaMorales/lenguajes-de-interfaz GitHub Wiki

Practica 1 - Configuración del entorno de programación

Resumen


En términos generales como primer punto se da un acercamiento al ecosistema Linux y dentro del mismo se repasan habilidades básicas que se deben tener para manejar dentro de este sistema operativo, como la capacidad de navegar dentro de los directorios mediante la Shell como segundo punto, y finalmente se instaló la paquetería necesaria para ejecutar el código además de un editor de código

Objetivo


El objetivo principal es conocer el SO Linux y preparar todo el entorno necesario para poder programar, compilar y ejecutar código en lenguaje ensamblador

Introducción


Esta práctica tiene la intención de preparar el entorno de trabajo yendo desde los comandos básicos en Linux hasta dejar listo el editor de código con sus plugins instalados

Metodología


Aprendiendo a caminar en la terminal

El sistema de archivos, será el árbol por el que nos estaremos moviendo en la terminal, aquí se encuentran los archivos del sistema operativo, así como también los ejecutables, controladores, archivos de configuración, etcétera.

En la carpeta home es donde se encuentran los usuarios del sistema operativo. Dentro de la terminal identificamos esta carpeta con el símbolo llamado virgulilla ~

Comandos Acción
ls Lista archivos y carpetas del directorio
ls - l Lista los archivos y carpetas con toda la información de cada uno
ls - lh ista los archivos y carpetas con la información legible para humanos
cd Es el acronimo de "Change Directory" como argumento requiere la ruta
cd .. Nos sirve para volver un directorio "atrás"
clear limpia el texto en la terminal
mdkir Crear un directorio (carpeta)
rm (Remove) sirve para eliminar documentos
rm -rf Sirve para eliminar de formula recursiva

Configurando el entorno de desarrollo

  1. Instalar NASM (Netwide Assembler) el cual es un ensamblador para arquitectura de x86 y uno de los ensambladores mas populares para Linux, para ellos ejecutar el siguiente comando en la Shell:
sudo apt install nasm
  1. Instalar build-essential, build-essential básicamente es una paquetería que contiene todos lo componentes necesario para compilar software, contiene básicamente la colección del compilador GNU/g++ y algunas otras librerías necesarias para compilar software. Se instala con en siguiente comando:
sudo apt-get install build-essential

Hecho lo anterior ya se tiene todo listo para correr un programa el ensamblador

  1. Instalar en editor de código Instalar VS Code u otros editor de código

Para VS Code solo es necesario ir a esta dirección This is an external link to VS Code y seleccionar el archivo .deb dar doble clic en el y usar el instalador de paquetes de de Linux

  1. Agregarle los plugins: En la sección de Extensiones de VS Code agregar la extensión: x86 and x86 Assembly (Link)

ya esta todo listo para correr un programa, por ejemplo el siguiente código:

; ----------------------------------------------------------------------------------------
; Writes "Hello, World" to the console using only system calls. Runs on 64-bit Linux only.
; To assemble and run:
;
;     nasm -felf64 hello.asm && ld hello.o && ./a.out
; ----------------------------------------------------------------------------------------

          global    _start

          section   .text
_start:   mov       rax, 1                  ; system call for write
          mov       rdi, 1                  ; file handle 1 is stdout
          mov       rsi, message            ; address of string to output
          mov       rdx, 13                 ; number of bytes
          syscall                           ; invoke operating system to do the write
          mov       rax, 60                 ; system call for exit
          xor       rdi, rdi                ; exit code 0
          syscall                           ; invoke operating system to exit

          section   .data
message:  db        "Hello, World", 10      ; note the newline at the end

Para ejecutarlo:

  1. Crear un archivo con la extensión .asm con el código en ensamblador

  2. Una vez hecho el código compilar el archivo .asm a código objeto con el siguiente comando:

nasm -f elf64 nombre-archivo.asm
  1. Lo anterior generara un archivo con extensión .o que ahora deberá ser convertido a un ejecutable, para ello se deberá usar el siguiente comando:
ld -o nombre-archivo nombre-archivo.o
  1. Ahora tenemos un archivo con el nombre "nombre-archivo" que esta listo para ser ejecutado, simplemente se ejecuta en la Shell de la siguiente forma:
./nombre-archivo 

Resultados


Como resultado se obtuvieron los archivos de ensamblador, objeto y el ejecutable .asm, .o y ejecutable respectivamente dentro de una distribución basada en Linux obteniendo como resultado un programa que imprime un mensaje en pantalla

Screenshot from 2023-02-13 21-23-19

Análisis


Se cumplió el objetivo planteado en la practica haciendo todo el proceso yendo el aprendizaje de manejar la Shell hasta poder ejecutar un programa en ensamblador usando la herramienta NASM

Conclusiones


El aprendizaje obtenido en términos generales fue el repaso de los conocimientos básicos que se debe tener para manejar una distribución Linux, (por lo menos en términos de manejar la Shell correctamente) además de saber cual es la manera correcta para acondicionar un entorno de trabajo en este sistema operativo y saber como compilar y ejecutar en código en lenguaje ensamblador

Referencias


The Linux command line for beginners. (s. f.). Ubuntu. https://ubuntu.com/tutorials/command-line-for-beginners

Package management. (s. f.). Ubuntu. https://ubuntu.com/server/docs/package-management