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.