Me gustaría construir un kernel incrustado para una máquina x86 usando Visual C++. Tengo algunos archivos de código C y ensamblador para compilar y me gustaría vincularlos todos de una manera que sea compatible con un gestor de arranque Multiboot como GRUB.¿Cómo construyo una imagen del kernel usando Visual Studio?
Respuesta
OSDev tiene una wiki entry on Visual Studio, que puede proporcionar una cierta penetración, especialmente con los enlaces a Kaushik Srenevasan de blogentries sobre el tema de granos de PE diseñado para ser cargado por gestores de arranque a base de arranque múltiple (como GRUB).
Un par de grandes-grandes rasgos cosas que debe saber:
- En la cabecera de arranque múltiple, es necesario utilizar este truco AOUT.
- Debe especificar el argumento/BASE: 0x100000 para el enlazador, de modo que el código binario final se base en dónde lo va a ubicar el gestor de arranque.
- El punto de entrada de su kernel (normalmente llamado '
kmain
') necesita tener__declspec(noreturn)
en él, y deberá hacer un__asm { hlt }
en lugar de devolverlo.
Copiar y pegar no funciona aquí, pero señala el error: parece que "... kernels-using% 5F03.html", pero debería ser "... kernels-using_03.html". –
No sé por qué, pero estoy copiando y pegándolo desde la barra de direcciones hasta aquí, y tiene un '_' literal cuando edito, así que parece estar reemplazándolo por el motivo que sea. –
Ok, envié un correo electrónico al equipo SO, y me señalaron que hay otras formas de hacer un enlace, así que lo cambié a uno que funciona. –
- 1. ¿Cómo construyo Notepad ++ con Visual C++ 2010 Express?
- 2. Usando windbg de Visual Studio
- 3. Insertar imagen en código con Visual Studio
- 4. ¿Cómo construyo una biblioteca de importación (.lib) Y una DLL en Visual C++?
- 5. ¿Cómo construyo una aplicación de consola VB6?
- 6. ¿Cómo construyo una aplicación Win32 con un archivo de recursos usando cmake y MinGW?
- 7. proyecto de Visual Studio no se construye cuando construyo Solución de msbuild
- 8. usando Qt designer en visual studio?
- 9. ¿Por qué obtengo un cursor ocupado mientras construyo en Visual Studio 2010?
- 10. ¿Cómo construyo los ejemplos de "Cómo empezar" usando XCode?
- 11. Visual Studio en una Mac
- 12. ¿Cómo creo impulso con Visual Studio 2008 cuando tengo instaladas varias versiones de Visual Studio?
- 13. ¿Mejores prácticas usando Git con Visual Studio?
- 14. usando FUSLOGVW.EXE en una máquina sin Visual Studio instalado
- 15. Usando .dll en Visual Studio 2010 C++
- 16. SOAP xml client - usando Visual Studio 2010 C# - ¿cómo?
- 17. ¿Cómo detener una compilación en Visual Studio?
- 18. ¿Cómo configuro una ruta en Visual Studio?
- 19. ¿Cómo construyo un proyecto de Android usando Ant? (IntelliJ IDE)
- 20. ¿Cómo le das a .exe una imagen ico en Visual Studio?
- 21. ¿Cómo depuro proyectos de Visual Studio usando VMware?
- 22. Visual Studio: mejor indicación del estado de compilación
- 23. ¿Cómo construyo una ExcepciónViolación de Constraint?
- 24. ¿Cómo construyo un Django reverse/url usando query args?
- 25. ¿Cómo distribuir módulos kernel usando un RPM?
- 26. ¿cómo puedo construir un controlador usando Visual Studio?
- 27. ¿Cómo crear aplicaciones .NET independientes usando Visual Studio?
- 28. imagen del componente no visual delphi
- 29. C# Visual Studio usando los archivos de recursos
- 30. ¿Se puede instalar Visual Studio 2010 con Visual Studio 2008 uno al lado del otro?
¿Estás seguro de que quieres ir por la ruta MSVC? Es un gran compilador pero creo que esto sería mucho más fácil con GCC/MingW –
Creo que GCC/MinGW también generará ejecutables PE. Tendré que hacer los cambios necesarios para ELF a PE en cualquier entorno. VS es un placer usarlo, creo que lo preferiría. –