1. Trang chủ
  2. » Giáo Dục - Đào Tạo

05 more about conditionals 09 49 tủ tài liệu bách khoa

10 36 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 118,74 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trang 1

int absdiff(int x, int y)

{

int result;

if (x > y) {

result = x-y;

} else {

result = y-x;

}

return result;

}

absdiff:

pushl %ebp movl %esp, %ebp movl 8(%ebp), %edx movl 12(%ebp), %eax cmpl %eax, %edx

jle .L7

subl %eax, %edx movl %edx, %eax

.L8:

leave ret

.L7:

subl %edx, %eax

jmp .L8

Trang 2

int result;

if (x > y) {

result = x-y;

} else {

result = y-x;

}

return result;

if (x <= y) goto Else;

result = x-y;

Exit:

return result;

Else:

result = y-x;

goto Exit;

Trang 3

int goto_ad(int x, int y)

{

int result;

if (x <= y) goto Else;

result = x-y;

Exit:

return result;

Else:

result = y-x;

goto Exit;

}

absdiff:

pushl %ebp movl %esp, %ebp

movl 8(%ebp), %edx movl 12(%ebp), %eax

cmpl %eax, %edx jle .L7

subl %eax, %edx movl %edx, %eax L8:

leave ret L7:

subl %edx, %eax jmp .L8

int x %edx

int y %eax

Trang 4

if (x <= y) goto Else;

result = x-y;

Exit:

return result;

Else:

movl 8(%ebp), %edx movl 12(%ebp), %eax

cmpl %eax, %edx jle .L7

subl %eax, %edx

Trang 5

int goto_ad(int x, int y)

{

int result;

if (x <= y) goto Else;

Exit:

return result;

Else:

result = y-x;

goto Exit;

}

absdiff:

pushl %ebp movl %esp, %ebp movl 8(%ebp), %edx movl 12(%ebp), %eax

cmpl %eax, %edx jle .L7

subl %eax, %edx movl %edx, %eax

.L8:

leave ret L7:

subl %edx, %eax jmp .L8

int x %edx

int y %eax

Trang 6

if (x <= y) goto Else;

Exit:

return result;

Else:

movl 8(%ebp), %edx movl 12(%ebp), %eax

cmpl %eax, %edx jle .L7

subl %eax, %edx

Trang 7

int goto_ad(int x, int y)

{

int result;

if (x <= y) goto Else;

Exit:

return result;

Else:

goto Exit;

}

absdiff:

pushl %ebp movl %esp, %ebp movl 8(%ebp), %edx movl 12(%ebp), %eax

cmpl %eax, %edx jle .L7

subl %eax, %edx movl %edx, %eax

.L8:

leave ret L7:

subl %edx, %eax

jmp .L8

int x %edx

int y %eax

Trang 8

§  

result = x>y ? x-y : y-x;

else

val = Else-­‐Expr;

Trang 9

§  

§  

§  

§  

absdiff: # x in %edi, y in %esi movl %edi, %eax # eax = x movl %esi, %edx # edx = y subl %esi, %eax # eax = x-y subl %edi, %edx # edx = y-x cmpl %esi, %edi # x:y

cmovle %edx, %eax # eax=edx if <= ret

int absdiff(

int x, int y)

{

int result;

if (x > y) {

result = x-y;

} else {

result = y-x;

}

return result;

}

Trang 10

0x104 … 0x1004

… … … 0x172 add r3, r4 0x1072

Ngày đăng: 09/11/2019, 06:39

🧩 Sản phẩm bạn có thể quan tâm