SORU
17 NİSAN 2015, Cuma


Disassemble _start at ne işe yarar() C?

Ve bir yaz yürütebileceği benim iş arkadaşımdan öğrendimCyazmadan program main() bir fonksiyon. Altında da yapılabilir

withoutMain.c

// Compile it with gcc -nostartfiles

void _start() {
  int ret = my_main();
  exit(ret); 
}

int my_main() {
  puts("This is a program without main!\n");
  return 0; 
}

Bu gibi derleme : gcc -o withoutMain withoutMain.c –nostartfiles

Çalıştırmak gibi : ./ withoutMain

Benim sorum ne Zaman biri böyle bir şey yapmak istesin. Bazı gerçek dünya senaryo?

CEVAP
17 NİSAN 2015, Cuma


Sembolü _startgiriş noktasısenin programın. Yani, bu sembolün Adres programı başlatmak için üzerine atladı. Normalde, adı _start işlevi C çalışma zamanı ortamı için başlatma kodunu içeren bir dosya crt0.o adlı tarafından sağlanır. Bazı şeyler ayarlar, doldurur bağımsız değişkeni dizi argv, orada, ve sonra main çağrıları nasıl sayar. main sonra döner, exit denir.

Eğer bir programı C çalışma zamanı ortamı kullanmak istiyorsa, _start için kendi kod kaynağına ihtiyacı var. Örneğin, Git programlama dili referans uygulama yığını ile bazı sihirli gerektiren standart dışı bir iş parçacığı modeli ihtiyaçları var, çünkü öyle. Gerçekten küçük programlar ya da sıradışı şeyler yapmak programlar yazmak istediğinizde de kendi _start tedarik için yararlıdır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Art Food Kitty - Kelly Eddington

    Art Food Kit

    7 Kasım 2006
  • ehowhome

    ehowhome

    22 NİSAN 2009
  • sonia989

    sonia989

    26 EKİM 2006