Merhaba arkadaşlar assembly ile çok ilgili değil aslında sormak istediğim şey bir programın ld tarafından nereden linklendiği tam anlatamadım ama kodda anlayacaksınız
EXTERN system
EXTERN puts
EXTERN getchar
EXTERN exit
EXTERN sleep
section .text
global _start
_start:
PUSHA
PUSH EBP
MOV EBP, ESP
PUSH String_1
CALL puts
POP EAX
PUSH String_2
CALL puts
POP EAX
CALL getchar
MOV ESP, EBP
POP EBP
POPA
PUSH 0
CALL exit
section .data
ClearScreen db "clear",0
String_1 db "hello world",0
String_2 db "Press ENTER to exit...",0
Nasm de başarıyla derleniyor ancak linkleme işleminde
a.o: In function _start': a.asm:(.text+0x0): multiple definition of
_start'
/usr/lib/gcc/i686-linux-gnu/4.6/../../../i386-linux-gnu/crt1.o:(.text+0x0): first defined here
/usr/lib/gcc/i686-linux-gnu/4.6/../../../i386-linux-gnu/crt1.o: In function _start': (.text+0x18): undefined reference to
main'
hatası var anlayamadığım start ı benim tanımlamam gerekiyor diye biliyorum ama ayrıca main i de tanımlasamda hala referans hatası alıyorum windows altında goLinker da aynı hatayı almıyorum sebebi nedir ?
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]