Skip to content

Margus Roo –

If you're inventing and pioneering, you have to be willing to be misunderstood for long periods of time

  • Cloudbreak Autoscale fix
  • Endast

Pure assembler machine code versus using libc

Posted on February 22, 2010 - February 23, 2010 by margusja

Võtame ühe lihtsa programmijupi mis kuvab teie protsessori nimi.

[margusja@hacking asm]$ ./cpuid2
The processor Vendor ID is 'GenuineIntel'

Lähtekood juhul kui kasutame ainult “system call” meetodeid

#cpuid.s Sample program to extract the processor Vendor ID.section .dataoutput:

.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)

# Display

movl $4, %eax # sys_write

movl $1, %ebx # file descriptor to write. 1 is stdout

movl $output, %ecx # start of the display string

movl $42, %edx # lenght of the display string

int $0x80

# Exit

movl $1, %eax # sys_exit

movl $0, %ebx # exit status

Lähtekood libc kasutamisest

#cpuid2.s View the CPUID Vendor ID string using C library calls.section .dataoutput:

.asciz "The processor Vendor ID is '%s'\n"

.section .bss

.lcomm buffer, 12

.section .text

.globl _start

_start:

movl $0, %eax

cpuid

movl $buffer, %edi

movl %ebx, (%edi)

movl %edx, 4(%edi)

movl %ecx, 8(%edi)

# Prepare printf

pushl $buffer

pushl $output

call printf # print $output using libc printf

addl $8, %esp # Move stack pointer pack

pushl $0 # Exit status

call exit # Exite the program using libc exit

Palju lihtsam. Paadunud assembleri mehed võivad küll nina kirtsutada kuid minu arust annab selline miksimine hea praktika ka C ja C++ osas ning tekitab huvi ka nende keelte vastu.

Posted in Assembler

Post navigation

Talv maal
Nüüd on lennukitööstuse ime ka tavainimesele kättesaadav

Leave a Reply

You must be logged in to post a comment.

The Master

Categories

  • Apache
  • Apple
  • Assembler
  • Audi
  • BigData
  • BMW
  • C
  • Elektroonika
  • Fun
  • Hadoop
  • help
  • Infotehnoloogia koolis
  • IOT
  • IT
  • IT eetilised
  • Java
  • Langevarjundus
  • Lapsed
  • lastekodu
  • Linux
  • M-401
  • Mac
  • Machine Learning
  • Matemaatika
  • Math
  • MSP430
  • Muusika
  • neo4j
  • openCL
  • Õpetaja identiteet ja tegevusvõimekus
  • oracle
  • PHP
  • PostgreSql
  • ProM
  • R
  • Turvalisus
  • Varia
  • Windows
Proudly powered by WordPress | Theme: micro, developed by DevriX.