xref: /linux/Documentation/translations/sp_SP/process/programming-language.rst (revision 5bc23521d617b4ac8f66d1614e7c8eb79da9cd5a)
11481df6cSCarlos Bilbao.. include:: ../disclaimer-sp.rst
21481df6cSCarlos Bilbao
31481df6cSCarlos Bilbao:Original: :ref:`Documentation/process/programming-language.rst <programming_language>`
4*5bc23521SBilbao, Carlos:Translator: Carlos Bilbao <carlos.bilbao.osdev@gmail.com>
51481df6cSCarlos Bilbao
61481df6cSCarlos Bilbao.. _sp_programming_language:
71481df6cSCarlos Bilbao
81481df6cSCarlos BilbaoLenguaje de programación
91481df6cSCarlos Bilbao========================
101481df6cSCarlos Bilbao
111481df6cSCarlos BilbaoEl kernel está escrito en el lenguaje de programación C [sp-c-language]_.
121481df6cSCarlos BilbaoMás concretamente, el kernel normalmente se compila con ``gcc`` [sp-gcc]_
131481df6cSCarlos Bilbaobajo ``-std=gnu11`` [sp-gcc-c-dialect-options]_: el dialecto GNU de ISO C11.
141481df6cSCarlos Bilbao``clang`` [sp-clang]_ también es compatible, consulte los documentos en
151481df6cSCarlos Bilbao:ref:`Building Linux with Clang/LLVM <kbuild_llvm>`.
161481df6cSCarlos Bilbao
171481df6cSCarlos BilbaoEste dialecto contiene muchas extensiones del lenguaje [sp-gnu-extensions]_,
181481df6cSCarlos Bilbaoy muchos de ellos se usan dentro del kernel de forma habitual.
191481df6cSCarlos Bilbao
201481df6cSCarlos BilbaoHay algo de soporte para compilar el núcleo con ``icc`` [sp-icc]_ para varias
211481df6cSCarlos Bilbaode las arquitecturas, aunque en el momento de escribir este texto, eso no
221481df6cSCarlos Bilbaoestá terminado y requiere parches de terceros.
231481df6cSCarlos Bilbao
241481df6cSCarlos BilbaoAtributos
251481df6cSCarlos Bilbao---------
261481df6cSCarlos Bilbao
271481df6cSCarlos BilbaoUna de las comunes extensiones utilizadas en todo el kernel son los atributos
281481df6cSCarlos Bilbao[sp-gcc-attribute-syntax]_. Los atributos permiten introducir semántica
291481df6cSCarlos Bilbaodefinida por la implementación a las entidades del lenguaje (como variables,
301481df6cSCarlos Bilbaofunciones o tipos) sin tener que hacer cambios sintácticos significativos
311481df6cSCarlos Bilbaoal idioma (por ejemplo, agregar una nueva palabra clave) [sp-n2049]_.
321481df6cSCarlos Bilbao
331481df6cSCarlos BilbaoEn algunos casos, los atributos son opcionales (es decir, hay compiladores
341481df6cSCarlos Bilbaoque no los admiten pero de todos modos deben producir el código adecuado,
351481df6cSCarlos Bilbaoincluso si es más lento o no realiza tantas comprobaciones/diagnósticos en
361481df6cSCarlos Bilbaotiempo de compilación).
371481df6cSCarlos Bilbao
381481df6cSCarlos BilbaoEl kernel define pseudo-palabras clave (por ejemplo, ``__pure``) en lugar
391481df6cSCarlos Bilbaode usar directamente la sintaxis del atributo GNU (por ejemplo,
401481df6cSCarlos Bilbao``__attribute__((__pure__))``) con el fin de detectar cuáles se pueden
411481df6cSCarlos Bilbaoutilizar y/o acortar el código.
421481df6cSCarlos Bilbao
431481df6cSCarlos BilbaoPor favor consulte ``include/linux/compiler_attributes.h`` para obtener
441481df6cSCarlos Bilbaomás información.
451481df6cSCarlos Bilbao
461481df6cSCarlos Bilbao.. [sp-c-language] http://www.open-std.org/jtc1/sc22/wg14/www/standards
471481df6cSCarlos Bilbao.. [sp-gcc] https://gcc.gnu.org
481481df6cSCarlos Bilbao.. [sp-clang] https://clang.llvm.org
491481df6cSCarlos Bilbao.. [sp-icc] https://software.intel.com/en-us/c-compilers
501481df6cSCarlos Bilbao.. [sp-gcc-c-dialect-options] https://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html
511481df6cSCarlos Bilbao.. [sp-gnu-extensions] https://gcc.gnu.org/onlinedocs/gcc/C-Extensions.html
521481df6cSCarlos Bilbao.. [sp-gcc-attribute-syntax] https://gcc.gnu.org/onlinedocs/gcc/Attribute-Syntax.html
531481df6cSCarlos Bilbao.. [sp-n2049] http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2049.pdf
54