No estoy seguro de que los estándares de lenguaje C o C++ hablen de instrucción; Es concebible que ejecute un programa C compilado para ser ejecutado por un gran grupo de esclavos humanos (pero eso no sería ético, incluso si se ajustase a las normas). Puede ejecutar usted mismo un pequeño programa simplista con un lápiz y papel, puede usar un intérprete C, etc. ... etc ...
Un compilador optimizador C o C++ también traduciría algunas sentencias C en varias instrucciones de la máquina ubicados en varios lugares (en particular, los compiladores hacen funciones en línea o clonar o incluso bloques básicos, incluso sin ninguna palabra clave inline
en el código fuente).
En la mayoría de los sistemas, puede codificar manualmente (por ejemplo, en el ensamblaje) una rutina que devuelve como valor de puntero su dirección de retorno (es decir, la dirección de la persona que llama).
Con GCC (y compiladores compatibles, tal vez Clang/LLVM), puede usar __builtin_return_address y construcciones internas relacionadas.
Gnu Libc en Linux le ofrece backtrace (pero me ha decepcionado, cuando lo intenté).
en cuenta que estos trucos no pudo trabajar al compilar con -fno-frame-pointer
También puede considerar la personalización de GCC, por ejemplo, con complementos o extensiones MELT (MELT es un lenguaje específico de dominio, implementado como un complemento GPLv3 para GCC, para extender GCC más fácilmente que con los complementos codificados en C). Su GCC personalizado puede insertar llamadas a funciones de instrumentación en lugares apropiados.
¿Por qué lo pide? –
No se requiere que C++ se implemente con las instrucciones. –
Hola, Basile, actualmente estoy investigando sobre las funciones de instrucción/reloj de datos. – nigong