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

03 memory addressing modes 14 22 tủ tài liệu bách khoa

15 65 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 210,11 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

¢ 

§ 

§ 

§  Ri:

§ 

§ 

¢ 

Trang 2

%edx

%ecx

0xf000 0x100

0x8(%edx)

(%edx,%ecx)

(%edx,%ecx,4)

0x80(,%edx,2)

(Rb,Ri) D(,Ri,S) (Rb,Ri,S) D(Rb)

0xf000 + 4*0x100 0xf400

Trang 3

¢  

§  

§  

§ 

§   Example: leal (%edx,%ecx,4), %eax

¢  

§  

§ 

§  

§ 

Trang 4

Format

¢ 

Trang 5

¢ 

Trang 6

int arith

(int x, int y, int z)

{

int t1 = x+y;

int t2 = z+t1;

int t3 = x+4;

int t4 = y * 48;

int t5 = t3 + t4;

int rval = t2 * t5;

return rval;

}

arith:

pushl %ebp movl %esp,%ebp

movl 8(%ebp),%eax movl 12(%ebp),%edx leal (%edx,%eax),%ecx leal (%edx,%edx,2),%edx sall $4,%edx

addl 16(%ebp),%ecx leal 4(%edx,%eax),%eax imull %ecx,%eax

movl %ebp,%esp popl %ebp

ret

Trang 7

int arith

(int x, int y, int z)

{

int t1 = x+y;

int t2 = z+t1;

int t3 = x+4;

int t4 = y * 48;

int t5 = t3 + t4;

int rval = t2 * t5;

return rval;

}

leal (%edx,%edx,2),%edx # edx = y + 2*y = 3*y

y

x

%ebp

0

4

8

12

z

16

Trang 8

int arith

(int x, int y, int z)

{

int t2 = z+t1;

int t3 = x+4;

int t4 = y * 48;

int t5 = t3 + t4;

int rval = t2 * t5;

return rval;

}

leal (%edx,%edx,2),%edx # edx = y + 2*y = 3*y

y

x

%ebp

0

4

8

12

z

16

Trang 9

int arith

(int x, int y, int z)

{

int t2 = z+t1;

int t3 = x+4;

int t5 = t3 + t4;

int rval = t2 * t5;

return rval;

}

leal (%edx,%edx,2),%edx # edx = y + 2*y = 3*y

y

x

%ebp

0

4

8

12

z

16

Trang 10

int arith

(int x, int y, int z)

{

int rval = t2 * t5;

return rval;

}

leal (%edx,%edx,2),%edx # edx = y + 2*y = 3*y

y

x

%ebp

0

4

8

12

z

16

Trang 11

int arith

(int x, int y, int z)

{

int rval = t2 * t5;

return rval;

}

leal (%edx,%edx,2),%edx # edx = y + 2*y = 3*y

§ 

§ 

§ 

§ 

Trang 12

int logical(int x, int y)

{

int t1 = x^y;

int t2 = t1 >> 17;

int mask = (1<<13) - 7;

int rval = t2 & mask;

return rval;

}

logical:

pushl %ebp movl %esp,%ebp

movl 8(%ebp),%eax xorl 12(%ebp),%eax sarl $17,%eax

andl $8185,%eax

movl %ebp,%esp popl %ebp

ret

%ebp

0

4

8

12

Trang 13

int logical(int x, int y)

{

int t2 = t1 >> 17;

int mask = (1<<13) - 7;

int rval = t2 & mask;

return rval;

}

logical:

pushl %ebp movl %esp,%ebp

movl 8(%ebp),%eax xorl 12(%ebp),%eax sarl $17,%eax

andl $8185,%eax

movl %ebp,%esp popl %ebp

ret

Trang 14

int logical(int x, int y)

{

int mask = (1<<13) - 7;

int rval = t2 & mask;

return rval;

}

logical:

pushl %ebp movl %esp,%ebp

movl 8(%ebp),%eax xorl 12(%ebp),%eax sarl $17,%eax

andl $8185,%eax

movl %ebp,%esp popl %ebp

ret

Trang 15

int logical(int x, int y)

{

int rval = t2 & mask;

return rval;

}

logical:

pushl %ebp movl %esp,%ebp

movl 8(%ebp),%eax xorl 12(%ebp),%eax sarl $17,%eax

andl $8185,%eax

movl %ebp,%esp popl %ebp

ret

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

TỪ KHÓA LIÊN QUAN

w