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

  • Baby Big Mouth

    Baby Big Mou

    5 Mart 2013
  • bombjack2991

    bombjack2991

    29 HAZİRAN 2008
  • Study with Substance P

    Study with S

    31 Mayıs 2008