Re: about execute assembly exapmles under freebsd

From: Maslan (maslanbsd_at_gmail.com)
Date: 04/25/05

  • Next message: benchmark: "cvsup hang"
    Date: Mon, 25 Apr 2005 12:39:03 +0200
    To: Tetsuji Maverick Rai <maverick31337@vfemail.net>
    
    

    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.
    >
    > -----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/
    >
    > _______________________________________________
    > 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"
    >

    -- 
    I'm Searching For Perfection,
    So Even If U Need Portability U've To Use Assembly ;-)
    http://www.maslanlab.org
    _______________________________________________
    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"
    

  • Next message: benchmark: "cvsup hang"

    Relevant Pages