2013-07-26 9 views
6

natknąłem tym fragmencie kodu:"global main" w Zgromadzeniu

section .text 
    global main ;must be declared for linker (gcc) 

i to nie jest funkcja o nazwie główny po tej linii:

main: ;tell linker entry point 

ale nie wydają się zrozumieć, co oznacza global main, a komentarz nie wydaje się pomóc ...

Używam this site jako odniesienia do programowania w języku Asemblera.

mogę analizować że main odnosi się do głównej funkcji, ale nie rozumiem użycie słowa kluczowego global ...

góry dziękuję ...

Odpowiedz

8

global main zasadniczo oznacza, że symbol powinien być widoczny dla linkera, ponieważ będą go używać inne pliki obiektów. Bez niego symbol jest uznawany za lokalny dla pliku obiektu, do którego został zmontowany i nie pojawi się po złożeniu pliku zespołu.

+0

okej, więc czy główna jest jak punkt wyjścia w programie podobnym do int()? C (++). – tenstar

+0

i czy używamy globalnej tylko po to, aby była widoczna dla wszystkich plików obiektów? – tenstar

+0

W tym przypadku tak - ale "globalny" może być użyty dla dowolnej funkcji. –