汇编 ($-array)是什么意思?

汇编 ($-array)是什么意思?,第1张

汇编语言在定义
数据段
时一般是顺序的分配内存空间,$表示当前即将分配地址,array是自定义的变量名,直接翻译过来就是当前地址减去array代表地址的差。
这种形式一般是用于求分配一串连续内存空间的长度,比如用array
db
31h,32h,33h
定义一个数组,$-array
就是这个数组长度,如果用dw定义,($-array
)/2即可得到数组长度

1、这是at&t风格的汇编与intel风格的不同:
movl -20(%ebp), %eax //i
leal 0(,%eax,4), %edx //地址运算array[0]+4i
=========================
movl 8(%ebp), %eax //ebp+8 位置的变这是j ->eax寄存器 (这个应该是函数参数 eax)
addl %edx, %eax //edx+eax->eax
movl (%eax), %eax //[eax] ->eax
movl %eax, -12(%ebp) //eax->ebp-12 (temp)
-----------------------------------------------------
2、注意栈区,一般ebp是栈帧的基地址,ebp-4是第一个变量 ebp-8是第二个变量 ebp-12是第三个变量。ebp+4是第一个函数入栈参数,ebp+8是第二个入栈参数。
3、我感觉你是对栈帧不熟悉,建议找一本电子书 0day软件安全看一下 有详细介绍,我对linux一知半解。只能说个大概


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/10257221.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存