汇编quad_cltq在汇编中做什么?

cltq将int提升为int64。 shl 3,%rax对64位指针进行偏移(将rax中的任何内容乘以8)。代码正在做的是循环遍历环境变量的指针列表。当它找到零值时,那就是结束,它就会退出循环。

下面是Linux如何将环境变量存储在堆栈上方的RAM中。你会看到从0xbffff75c开始的指针;指向0xbffff893,“TERM = rxvt”。

jcomeau@intrepid:/tmp$ gdb test

GNU gdb (GDB) 7.2-debian

Copyright (C) 2010 Free Software Foundation, Inc.

License GPLv3+: GNU GPL version 3 or later

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law. Type "show copying"

and "show warranty" for details.

This GDB was configured as "i486-linux-gnu".

For bug reporting instructions, please see:

...

Reading symbols from /tmp/test...(no debugging symbols found)...done.

(gdb) break main

Breakpoint 1 at 0x80483e7

(gdb) run

Starting program: /tmp/test

Breakpoint 1, 0x080483e7 in main ()

(gdb) info reg

eax 0xbffff754 -1073744044

ecx 0xe88ed1c 243854620

edx 0x1 1

ebx 0xb7fc5ff4 -1208197132

esp 0xbffff6a8 0xbffff6a8

ebp 0xbffff6a8 0xbffff6a8

esi 0x0 0

edi 0x0 0

eip 0x80483e7 0x80483e7

eflags 0x200246 [ PF ZF IF ID ]

cs 0x73 115

ss 0x7b 123

ds 0x7b 123

es 0x7b 123

fs 0x0 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值