Напишите простую программу из нескольких строк C, которая выполняет интересующую вас задачу. Скомпилируйте ее для объекта. Разберите этот объект .... Посмотрите, как ассемблер готовится вызвать математическую функцию и как она вызывает математическую функцию, возьмите сегменты дизассемблированного кода в качестве отправной точки для ассемблера и перейдите оттуда.
Теперь, если вы говорите о какой-то встроенной системе без операционной системы, проблема не в операционной системе, а в библиотеке C / math. Эти библиотеки в этих или других функциях могут полагаться на вызовы операционной системы, которые не будут действительными. В идеале, хотя это тот же самый точный механизм, подготовьтесь к вызову функции, установив правильные регистры, сделайте вызов функции, используйте результаты. С внедренным ваша проблема возникает, когда вы пытаетесь связать свой код с библиотекой и / или когда вы пытаетесь выполнить его.
Если вы спрашиваете, как воссоздать эту функцию без использования предварительно созданной библиотеки с использованием дискретных инструкций. Это совершенно другая тема, особенно если вы используете процессор без этих инструкций. Вы можете немного узнать, посмотрев исходный код библиотеки для этих функций и / или разборку рассматриваемых функций, но это, вероятно, не очевидно. Ищите книгу или книгу, похожую на «Восторг хакера», в которой полно таких вещей, как выполнение математических функций, которые изначально не поддерживаются языком или процессором.