Date: Sun, 24 Apr 2005 22:04:37 +0900 From: "Tetsuji \"Maverick\" Rai" <maverick31337@vfemail.net> To: HHCHANG <b8701143@tmu.edu.tw> Cc: freebsd-hackers@freebsd.org Subject: Re: about execute assembly exapmles under freebsd Message-ID: <426B9965.2000003@vfemail.net> In-Reply-To: <000f01c548a1$0eb33fd0$6702a8c0@IBM6C6CDABCD41> References: <000f01c548a1$0eb33fd0$6702a8c0@IBM6C6CDABCD41>
next in thread | previous in thread | raw e-mail | index | archive | help
I refined my code to make the binary shorter. Your code is in Linux system call convention (ie, arguments are in eax,ebx,ecx...), however in FreeBSD by default arguments must be pushed in the stack. -----t.s------------- .section .data output: .ascii "The processor Vendor ID is 'xxxxxxxxxxxx'\n" .section .text .globl _start _start: xor %eax, %eax cpuid mov $output, %edi # load address of output in edi movl %ebx, 28(%edi) movl %edx, 32(%edi) movl %ecx, 36(%edi) pushl $42 mov $output, %eax pushl %eax pushl $1 mov $4,%eax push %eax int $0x80 add $16,%esp # of course you can omit this xor %eax,%eax # this is shorter than "pushl $0; pushl $1; mov $1,%eax" push %eax inc %eax push %eax int $0x80 --------------t.s end---------- and it works like this: ---cut----- freebsd53:~/tmp% as t.s -o t.o freebsd53:~/tmp% ld t.o -o t freebsd53:~/tmp% ./t The processor Vendor ID is 'GenuineIntel' ---cut----- HHCHANG wrote: >Hi, >I couldn't execute assembly example under freebsd . >The environment and tools I used were (in IBM X31 box): >1. >bash-2.05b# uname -a >FreeBSD sexbear.localhost 5.3-STABLE FreeBSD 5.3-STABLE #3: Sun Feb 20 21:55:06 UTC 2005 ?root@sexbear.localhost:/usr/obj/usr/src/sys/SEXBEAR??i386 >2. >bash-2.05b# as -v >GNU assembler version 2.15 [FreeBSD] 2004-05-23 (i386-obrien-freebsd) using BFD version 2.15 [FreeBSD] 2004-05-23 > >bash-2.05b# ld -v >GNU ld version 2.15 [FreeBSD] 2004-05-23 > >3.(compile and execute the example) >bash-2.05b# > as -gstabs -o cpuid.o cpuid.s > ld -o cpuid cpuid.o > cpuid (no output after executing the program) > gdb cpuid > (gdb) run > Starting program: /usr/local/src/code/chap04/cpuid > Program exited with code 0340. > (gdb) break *_start > (gdb) run > Program exited with code 0340. >###################example in book################################### >#cpuid.s Sample program to extract the processor Vendor ID >.section .data >output: > .ascii "The processor Vendor ID is 'xxxxxxxxxxxx'\n" >.section .text >.globl _start >_start: > movl $0, %eax > cpuid > movl $output, %edi > movl %ebx, 28(%edi) > movl %edx, 32(%edi) > movl %ecx, 36(%edi) > movl $4, %eax > movl $1, %ebx > movl $output, %ecx > movl $42, %edx > int $0x80 > movl $1, > %eax > movl $0, %ebx > int $0x80 > >###################example in book################################### > >I viewed the tutorial: http://www.int80h.org/bsdasm/. >but I couldn't find any syntax error in the program. >Could someone give me a hint where I could find the more information? >Thanks~ > >Regards, >_______________________________________________ >freebsd-hackers@freebsd.org mailing list >http://lists.freebsd.org/mailman/listinfo/freebsd-hackers >To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org" > > > -- Tetsuji 'Maverick' Rai PGP Key fingerprint = 2021 6BF9 CEA3 73DE FF17 B326 F4DA F04E F784 3B85 gpg fingerprint Aviation Jokes: http://www.geocities.com/tetsuji_rai/ Profile http://maverick.ns1.name/ http://maverick.IsASecret.com/
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?426B9965.2000003>