xref: /linux/Documentation/translations/sp_SP/process/programming-language.rst (revision 1481df6cbd0d606fa1a26b752e2e1aba0b650093)
1*1481df6cSCarlos Bilbao.. include:: ../disclaimer-sp.rst
2*1481df6cSCarlos Bilbao
3*1481df6cSCarlos Bilbao:Original: :ref:`Documentation/process/programming-language.rst <programming_language>`
4*1481df6cSCarlos Bilbao:Translator: Carlos Bilbao <carlos.bilbao@amd.com>
5*1481df6cSCarlos Bilbao
6*1481df6cSCarlos Bilbao.. _sp_programming_language:
7*1481df6cSCarlos Bilbao
8*1481df6cSCarlos BilbaoLenguaje de programación
9*1481df6cSCarlos Bilbao========================
10*1481df6cSCarlos Bilbao
11*1481df6cSCarlos BilbaoEl kernel está escrito en el lenguaje de programación C [sp-c-language]_.
12*1481df6cSCarlos BilbaoMás concretamente, el kernel normalmente se compila con ``gcc`` [sp-gcc]_
13*1481df6cSCarlos Bilbaobajo ``-std=gnu11`` [sp-gcc-c-dialect-options]_: el dialecto GNU de ISO C11.
14*1481df6cSCarlos Bilbao``clang`` [sp-clang]_ también es compatible, consulte los documentos en
15*1481df6cSCarlos Bilbao:ref:`Building Linux with Clang/LLVM <kbuild_llvm>`.
16*1481df6cSCarlos Bilbao
17*1481df6cSCarlos BilbaoEste dialecto contiene muchas extensiones del lenguaje [sp-gnu-extensions]_,
18*1481df6cSCarlos Bilbaoy muchos de ellos se usan dentro del kernel de forma habitual.
19*1481df6cSCarlos Bilbao
20*1481df6cSCarlos BilbaoHay algo de soporte para compilar el núcleo con ``icc`` [sp-icc]_ para varias
21*1481df6cSCarlos Bilbaode las arquitecturas, aunque en el momento de escribir este texto, eso no
22*1481df6cSCarlos Bilbaoestá terminado y requiere parches de terceros.
23*1481df6cSCarlos Bilbao
24*1481df6cSCarlos BilbaoAtributos
25*1481df6cSCarlos Bilbao---------
26*1481df6cSCarlos Bilbao
27*1481df6cSCarlos BilbaoUna de las comunes extensiones utilizadas en todo el kernel son los atributos
28*1481df6cSCarlos Bilbao[sp-gcc-attribute-syntax]_. Los atributos permiten introducir semántica
29*1481df6cSCarlos Bilbaodefinida por la implementación a las entidades del lenguaje (como variables,
30*1481df6cSCarlos Bilbaofunciones o tipos) sin tener que hacer cambios sintácticos significativos
31*1481df6cSCarlos Bilbaoal idioma (por ejemplo, agregar una nueva palabra clave) [sp-n2049]_.
32*1481df6cSCarlos Bilbao
33*1481df6cSCarlos BilbaoEn algunos casos, los atributos son opcionales (es decir, hay compiladores
34*1481df6cSCarlos Bilbaoque no los admiten pero de todos modos deben producir el código adecuado,
35*1481df6cSCarlos Bilbaoincluso si es más lento o no realiza tantas comprobaciones/diagnósticos en
36*1481df6cSCarlos Bilbaotiempo de compilación).
37*1481df6cSCarlos Bilbao
38*1481df6cSCarlos BilbaoEl kernel define pseudo-palabras clave (por ejemplo, ``__pure``) en lugar
39*1481df6cSCarlos Bilbaode usar directamente la sintaxis del atributo GNU (por ejemplo,
40*1481df6cSCarlos Bilbao``__attribute__((__pure__))``) con el fin de detectar cuáles se pueden
41*1481df6cSCarlos Bilbaoutilizar y/o acortar el código.
42*1481df6cSCarlos Bilbao
43*1481df6cSCarlos BilbaoPor favor consulte ``include/linux/compiler_attributes.h`` para obtener
44*1481df6cSCarlos Bilbaomás información.
45*1481df6cSCarlos Bilbao
46*1481df6cSCarlos Bilbao.. [sp-c-language] http://www.open-std.org/jtc1/sc22/wg14/www/standards
47*1481df6cSCarlos Bilbao.. [sp-gcc] https://gcc.gnu.org
48*1481df6cSCarlos Bilbao.. [sp-clang] https://clang.llvm.org
49*1481df6cSCarlos Bilbao.. [sp-icc] https://software.intel.com/en-us/c-compilers
50*1481df6cSCarlos Bilbao.. [sp-gcc-c-dialect-options] https://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html
51*1481df6cSCarlos Bilbao.. [sp-gnu-extensions] https://gcc.gnu.org/onlinedocs/gcc/C-Extensions.html
52*1481df6cSCarlos Bilbao.. [sp-gcc-attribute-syntax] https://gcc.gnu.org/onlinedocs/gcc/Attribute-Syntax.html
53*1481df6cSCarlos Bilbao.. [sp-n2049] http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2049.pdf
54