Date: Mon, 25 Apr 2005 12:39:03 +0200 From: Maslan <maslanbsd@gmail.com> To: Tetsuji Maverick Rai <maverick31337@vfemail.net> Cc: HHCHANG <b8701143@tmu.edu.tw> Subject: Re: about execute assembly exapmles under freebsd Message-ID: <319cceca05042503395f67e573@mail.gmail.com> In-Reply-To: <426B9965.2000003@vfemail.net> References: <000f01c548a1$0eb33fd0$6702a8c0@IBM6C6CDABCD41> <426B9965.2000003@vfemail.net>
next in thread | previous in thread | raw e-mail | index | archive | help
hey if u need u to use linux calling way u will need to brandelf the executable (if it's elf) On 4/24/05, Tetsuji Maverick Rai <maverick31337@vfemail.net> wrote: > 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. >=20 > -----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---------- >=20 > and it works like this: >=20 > ---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----- >=20 >=20 > HHCHANG wrote: >=20 > >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 2= 1:55:06 UTC 2005 ?root@sexbear.localhost:/usr/obj/usr/src/sys/SEXBEAR??i= 386 > >2. > >bash-2.05b# as -v > >GNU assembler version 2.15 [FreeBSD] 2004-05-23 (i386-obrien-freebsd) us= ing 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.or= g" > > > > > > >=20 > -- > Tetsuji 'Maverick' Rai > PGP Key fingerprint =3D 2021 6BF9 CEA3 73DE FF17 B326 F4DA F04E F784 3B8= 5 > gpg fingerprint > Aviation Jokes: http://www.geocities.com/tetsuji_rai/ > Profile http://maverick.ns1.name/ > http://maverick.IsASecret.com/ >=20 > _______________________________________________ > 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= " >=20 --=20 I'm Searching For Perfection, So Even If U Need Portability U've To Use Assembly ;-) http://www.maslanlab.org
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?319cceca05042503395f67e573>