Creo que no vale la pena hacerlo en el curso principal de ErickAssembly asi que lo hare en otro curso
Teoria
Tenemos que ver como gestionar la pantalla , el teclado y otras cosas
herramientas que necesitaremos
1 . KellyBootloader
2. ErickAssambler
3. la extension de vscode para el resaltado y autocmpletado de ErickAssembly
4. Vscode (si no lo tienes)
-
los links de descarga de ErickAssembly estan en
-
el link oficial de descarga de KellyBootloader lo puede encontrar en KellyBootloader y no se preocupen, pueden confiar en mi, esta hecho con fines educativos
-
la extension de vscode la puedes encontrar aqui: ErickASM extension - Visual Studio Marketplace
-
todos los links de descarga son confiables, yo los hice, yo los compile , o no confian en mi? , bueno, continuemos
Pasos
-
ErickAssembly
- descargar la version correspondiente para el sistema
- descomprimir el .zip
- ya que lo tenemos , moverlo a donde recordemos junto con las dll
-
KellyBootloader
- decargas al .efi, y lo renombras a
bootx64.efi
- lo metes en una usb (opcionalmente si no te quieres cargar tu instalacion o grub) en la carpeta
/efi/boot
- decargas al .efi, y lo renombras a
Pre-trabajo
una vez descargamos todas las herramientas ya podemos empezar a hacer nuestro sistema
pero antes tenemos que elegir con que sintaxis de ErickAssembly podemos trabajar
hay dos opciones
- el normal: aunque sea mas legible que ensamblador normal, sigue siendo ensamblador
- El hlvc : este es mas reciente, tiene una sintaxis mas parecida a C
ahora si empezamos con el curso
vamos a empezar con algo facil para los que aun no se vieron el anterior curso
Ejemplo si elegiste Hlvc
aunque la sintaxis sea parecida a C, no es la misma, pero es mas facil
- una limitacion: no puedes usar algunos system_calls importantisimos para la creacion del sistema asi que por ahora , solo te quedaras esatancado en el siguiente ejemplo por que , pues, como puedes hacer un SO sin esas llamadas, aun asi en alguna parte del curso, les enseñare un avance con los nuevos , pero hay una solucion que hice , puedes usar
__asm linea
para insertar codigo asm
aqui hay un ejemplo usando el hlvc
HightLevel[
/**
* loader.easm
*
* carga el OS
**/
/*para mantener compatibilidad con ASCII*/
use "ASCII"
/*
configurar el archivo del cual el sistema booteara
*/
BUFFER SystemFile AllocatePool->StrLen\s"SYSTEM.BIN"
/**
imprimir el texto
**/
Print "Hola\sdesde\sel\sKernel\ssimple"
SystemFile [0] 'S'
SystemFile [1] 'Y'
SystemFile [2] 'S'
SystemFile [3] 'T'
SystemFile [4] 'E'
SystemFile [5] 'M'
SystemFile [6] '.'
SystemFile [7] 'B'
SystemFile [8] 'I'
SystemFile [9] 'N'
__asm system_call 21,SystemFile
]HightLevel
Ejemplo si eligiste el compilador normal
aqui tienes mas libertad, pero lo tienes que hacer todo manualmente, puedes hacer esto
para replicar el codigo anterior
EA
move 6,0
move 7,10
system_call 14,6
move 1,72
system_call 8,1
move 1,79
move 2,32
add 1,2
system_call 8,1
move 1,76
move 2,32
add 1,2
system_call 8,1
move 1,65
move 2,32
add 1,2
system_call 8,1
move 1,0
move 2,32
add 1,2
system_call 8,1
move 1,68
move 2,32
add 1,2
system_call 8,1
move 1,69
move 2,32
add 1,2
system_call 8,1
move 1,83
move 2,32
add 1,2
system_call 8,1
move 1,68
move 2,32
add 1,2
system_call 8,1
move 1,69
move 2,32
add 1,2
system_call 8,1
move 1,0
move 2,32
add 1,2
system_call 8,1
move 1,69
move 2,32
add 1,2
system_call 8,1
move 1,76
move 2,32
add 1,2
system_call 8,1
move 1,0
move 2,32
add 1,2
system_call 8,1
move 1,75
system_call 8,1
move 1,69
move 2,32
add 1,2
system_call 8,1
move 1,82
move 2,32
add 1,2
system_call 8,1
move 1,78
move 2,32
add 1,2
system_call 8,1
move 1,69
move 2,32
add 1,2
system_call 8,1
move 1,76
move 2,32
add 1,2
system_call 8,1
move 1,0
move 2,32
add 1,2
system_call 8,1
move 1,83
move 2,32
add 1,2
system_call 8,1
move 1,73
move 2,32
add 1,2
system_call 8,1
move 1,77
move 2,32
add 1,2
system_call 8,1
move 1,80
move 2,32
add 1,2
system_call 8,1
move 1,76
move 2,32
add 1,2
system_call 8,1
move 1,69
move 2,32
add 1,2
system_call 8,1
system_call 9,0
set_value_with_value 1,0
move 2,0
move 3,83
system_call 16,1
set_value_with_value 1,0
move 2,1
move 3,89
system_call 16,1
set_value_with_value 1,0
move 2,2
move 3,83
system_call 16,1
set_value_with_value 1,0
move 2,3
move 3,84
system_call 16,1
set_value_with_value 1,0
move 2,4
move 3,69
system_call 16,1
set_value_with_value 1,0
move 2,5
move 3,77
system_call 16,1
set_value_with_value 1,0
move 2,6
move 3,46
system_call 16,1
set_value_with_value 1,0
move 2,7
move 3,66
system_call 16,1
set_value_with_value 1,0
move 2,8
move 3,73
system_call 16,1
set_value_with_value 1,0
move 2,9
move 3,78
system_call 16,1
system_call 21,0
move 3,78
system_call 16,1
compilandolo
en mi caso, para ponerles el ejemplo, cree un sistema llamado AnyKOS, y lo cree usando hlvc
compilando un hlvc
para compilar un .easm con hlvc (hight-level compiler) debes usar el comando
root@local^:# hlvc /direccion/a/tu/archivo.easm
compilando con el ErickAssembly normal
en el prompt de ErickAssambler debes usar el comando
root@local^:# file /direccion/a/tu/archivo.easm
ejecucion
Al ejecutar ese codigo (en cualquiera de los dos casos) deberias ver esto