Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчеты по Курсовой Работе / Сравнение 16 и 32 разрядных ассемблеров Елганов А.А. 8-78-3.pdf
Скачиваний:
42
Добавлен:
12.03.2015
Размер:
197.46 Кб
Скачать

Листинг программы для сравнения архитектур i686 и amd64

.text

 

.globl

crypt

.type

crypt, @function

crypt:

 

 

.LFB0:

 

 

pushq

%rbp

movq %rsp, %rbp

subq $32, %rsp

movq %rdi, -24(%rbp)

movq %rsi, -32(%rbp)

movl $0, -16(%rbp)

movl $0, -12(%rbp)

movq -24(%rbp), %rax

movq %rax, %rdi

call strlen

movq %rax, %rdi

call malloc

movq %rax, -8(%rbp)

jmp

.L2

 

.L3:

 

 

movl -16(%rbp), %eax

movslq

%eax, %rdx

movq -8(%rbp), %rax

addq %rax, %rdx

movl -16(%rbp), %eax

movslq

%eax, %rcx

movq -24(%rbp), %rax

addq %rcx, %rax

movzbl

(%rax), %ecx

movl -12(%rbp), %eax

movslq

%eax, %rsi

movq -32(%rbp), %rax

addq %rsi, %rax

movzbl

(%rax), %eax

xorl %ecx, %eax

movb %al, (%rdx)

addl $1, -16(%rbp)

addl $1, -12(%rbp)

movl -12(%rbp), %eax

movslq

%eax, %rdx

movq -32(%rbp), %rax

addq %rdx, %rax

movzbl

(%rax), %eax

testb

%al, %al

jne

.L2

 

movl $0, -12(%rbp)

.L2:

 

 

movl -16(%rbp), %eax

movslq

%eax, %rdx

movq -24(%rbp), %rax

addq %rdx, %rax

movzbl

(%rax), %eax

testb

%al, %al

jne

.L3

 

movq -8(%rbp), %rax leave

ret

8

.LFE0:

 

.size

crypt, .-crypt

.section

.rodata

.LC0:

 

.string

"Hello, World!"

.LC1:

 

.string

"My_key111"

.LC2:

 

.string

"--------------"

.text

 

.globl

main

.type

main, @function

main:

 

.LFB1:

 

pushq

%rbp

movq %rsp, %rbp

subq $32, %rsp

movl %edi, -20(%rbp)

movq %rsi, -32(%rbp)

movq $.LC0, -16(%rbp)

movq $.LC1, -8(%rbp)

movq -16(%rbp), %rax

movq %rax, %rdi

call puts

 

movl $.LC2, %edi

call puts

 

movq -8(%rbp), %rdx

movq -16(%rbp), %rax

movq %rdx, %rsi

movq %rax, %rdi

call crypt

movq %rax, -16(%rbp)

movq -16(%rbp), %rax

movq %rax, %rdi

call puts

 

movq -8(%rbp), %rdx

movq -16(%rbp), %rax

movq %rdx, %rsi

movq %rax, %rdi

call crypt

movq %rax, -16(%rbp)

movl $.LC2, %edi

call puts

 

movq -16(%rbp), %rax

movq %rax, %rdi

call puts

 

movl $0, %eax

leave

 

ret

 

.LFE1:

 

.size

main, .-main

Листинг 9. Простейшая программа шифрования текста для архитектуры amd64.

.text

 

.globl

crypt

.type

crypt, @function

crypt:

 

.LFB0:

 

pushl

%ebp

9

movl %esp, %ebp

pushl

%ebx

subl $36, %esp

movl $0, -12(%ebp)

movl $0, -16(%ebp)

movl 8(%ebp), %eax

movl %eax, (%esp)

call strlen

movl %eax, (%esp)

call malloc

movl %eax, -20(%ebp)

jmp

.L2

 

.L3:

 

 

movl -12(%ebp), %edx

movl -20(%ebp), %eax

addl %eax, %edx

movl -12(%ebp), %ecx

movl 8(%ebp), %eax

addl %ecx, %eax

movzbl

(%eax), %ecx

movl -16(%ebp), %ebx

movl 12(%ebp), %eax

addl %ebx, %eax

movzbl

(%eax), %eax

xorl %ecx, %eax

movb %al, (%edx)

addl $1, -12(%ebp)

addl $1, -16(%ebp)

movl -16(%ebp), %edx

movl 12(%ebp), %eax

addl %edx, %eax

movzbl

(%eax), %eax

testb

%al, %al

jne

.L2

 

movl $0, -16(%ebp)

.L2:

 

 

movl -12(%ebp), %edx

movl 8(%ebp), %eax

addl %edx, %eax

movzbl

(%eax), %eax

testb

%al, %al

jne

.L3

 

movl -20(%ebp), %eax

addl $36, %esp

popl %ebx

 

popl %ebp

 

ret

 

 

.LFE0:

 

 

.size

crypt, .-crypt

.section

.rodata

.LC0:

 

 

.string

"Hello, World!"

.LC1:

 

 

.string

"My_key111"

.LC2:

 

 

.string

"--------------"

.text

 

.globl

main

.type

main, @function

main:

 

 

10

.LFB1:

pushl %ebp movl %esp, %ebp andl $-16, %esp subl $32, %esp

movl $.LC0, 28(%esp) movl $.LC1, 24(%esp) movl 28(%esp), %eax movl %eax, (%esp) call puts

movl $.LC2, (%esp) call puts

movl 24(%esp), %eax movl %eax, 4(%esp) movl 28(%esp), %eax movl %eax, (%esp) call crypt

movl %eax, 28(%esp) movl 28(%esp), %eax movl %eax, (%esp) call puts

movl 24(%esp), %eax movl %eax, 4(%esp) movl 28(%esp), %eax movl %eax, (%esp) call crypt

movl %eax, 28(%esp) movl $.LC2, (%esp) call puts

movl 28(%esp), %eax movl %eax, (%esp) call puts

movl $0, %eax leave

ret

.LFE1:

.size main, .-main

Листинг 10. Простейшая программа шифрования текста для архитектуры i686.

11