Pliki źródłowe bibliotek math.h i stdlib.h

0

Chciałbym podejrzeć pliki math.h, math.c, stdlib.h, stdlib.c, zobaczyć jak niektóre funkcje są napisane.
Druga sprawa to mam napisaną pewną funkcję w C, jak sprawdzić ile rozkazów procesora ona zajmuje? w zależności od parametrów funkcji?

1

Pliki te są zależne od implementacji.
Możesz podejrzeć nagłówki, ale nie koniecznie musisz znaleźć tam coś ciekawego.

Szukaj po opensource projektach, jak tu:
https://github.com/waweber/uclibc-clang/blob/master/include/math.h
https://github.com/waweber/uclibc-clang/blob/master/include/stdlib.h

1

W zależności od kompilatora mogą być w wielu miejscach, a czasami nawet w kilku wersjach (dla różnych wersji bibliotek standardowych). Ale tam nie znajdziesz jak to jest napisane, to są tylko pliki nagłówkowe, tam są tylko deklaracje funkcji!

1
komp napisał(a):

Chciałbym podejrzeć pliki math.h, math.c, stdlib.h, stdlib.c, zobaczyć jak niektóre funkcje są napisane.
Druga sprawa to mam napisaną pewną funkcję w C, jak sprawdzić ile rozkazów procesora ona zajmuje? w zależności od parametrów funkcji?

Jeśli używasz biblioteki glibc, to tu są źródła: https://sourceware.org/git/?p=glibc.git;a=tree a tu masz np. math: https://sourceware.org/git/?p=glibc.git;a=tree;f=math;h=306d6be005fc3b02397fcbd9df03002da79d8569;hb=HEAD (szalenie niewygodne przeglądanie wg. mnie) lepiej więc je ściągnij na lokalną maszynę stąd: http://ftp.gnu.org/gnu/glibc
Jeśli używasz biblioteki komercyjnej (np. obecnej w Visual Studio), to niestety łatwego dostępu do źródeł nie będziesz miał. Dla Microsoftu i innych "wielkich" te biblioteki robi firma Dincumware http://www.dinkumware.com. Nie sądzę jednak byś źródła otrzymał :-/

Jeśli chcesz zobaczyć jakie rozkazy wykonuje procesor wykonując funkcję, to dla gcc/g++/clang/clang++ możesz skompilować program z opcjami debug ( przełącznik -g1), i plik *.o wyświetlić z poprzez

objdump -Sd plik.o
0

A w VS2013 da się jakoś podglądnąć?

0

Tak. Możesz to zrobić na etapie normalnego debugowania programu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1