jako początkujący asm, sprawdzam generowany kod asc gcc -S, aby się uczyć.dlaczego domyślna rezerwa gcc 4.x 8 bajtów dla stosu na Linuksie podczas wywoływania metody?
dlaczego domyślna rezerwa gcc 4.x 8 bajtów dla stosu podczas wywoływania metody?
func18 to pusta funkcja bez zwrotu bez param nie zdefiniowany lokalny var. Nie mogę się domyślić, dlaczego zarezerwowano tu 8 bajtów (żadne forum/witryna nie wspomina o tym z jakiegoś powodu, ppl wygląda na pewnik) czy to jest dla% ebp po prostu push? lub zwrócić typ ?! wiele razy!
.globl _func18
_func18:
pushl %ebp
movl %esp, %ebp
subl $8, %esp
.text
W rzeczywistości żadna z tych instrukcji nie ma sensu ... funkcja bez zmiennych lokalnych nie musi ustawiać wskaźnika ramki – Martin
Prawdopodobnie zależy to od poziomu optymalizacji. Czy możesz dołączyć kompletny wygenerowany kod do funkcji? –
Czy to miejsce dla adresu powrotu i wskaźnika ramki stosu? – jdizzle