Эти ловушки обычно генерируются аппаратным обеспечением * на уровне архитектуры набора команд (ISA). В частности на x86-64.
Я хочу знать, какой код и файлы в библиотеке glibc отвечают за генерацию ловушек для исключений с плавающей запятой, когда ловушки включены.
Так что такого файла нет. Однако операционная система kernel (особенно с signal (7) -s в Linux ...) переводит ловушки в нечто другое.
Пожалуйста, прочитайте Операционные системы: Три легкие части для получения дополнительной информации. И детально изучите x86-64 набор инструкций.
Более знакомый пример - целочисленное деление на ноль. На большинстве аппаратных средств, которые производят машинную ловушку (или машину исключение ), обработанную ядром. На некоторых аппаратных средствах (IIRC, PowerPC ) он выдает -1 в результате и устанавливает некоторый бит в регистре состояния. Дальнейший машинный код может проверить этот бит. Я считаю, что компилятор GCC в некоторых случаях и с некоторыми отключенными оптимизациями 1038 * будет генерировать такой тест после каждого деления. Но это не обязательно.
Язык C (читай n1570 , который практически является стандартом C11) определил понятие неопределенное поведение , чтобы обрабатывать такие ситуации максимально быстро и просто. Прочитайте Lattner Что должен знать каждый программист C о неопределенном поведении blog.
Поскольку вы упоминаете RISC-V , прочитайте о философии RISC прошлого века и помните, что проектирование вышло из строя и * Процессоры 1057 * суперскалярные требуют больших инженерных усилий. Я предполагаю, что если вы инвестируете столько же НИОКР (что означает десятки миллиардов долларов США или евро), чем Intel - или, в меньшей степени, AMD - сделал на x86-64 в чип RISC-V, вы могли бы получить сопоставимые производительность для современных процессоров x86-64. Обратите внимание, что чипы SPARC или PowerPC (или, возможно, ARM) похожи на RISC, а их лучшие процессоры почти сопоставимы по производительности с чипами Intel, но, вероятно, в десять раз меньше инвестиций в НИОКР, чем Intel вкладывает в свои микропроцессоры.