123*_*eee 1 c linux assembly x86-64
我正在寻找一个执行以下操作的程序:
./prog &pmap工具,程序和[stack]字段.这个问题不仅仅是学术性的,我正在研究内存扫描仪,我需要一个最小的例子来处理.
我能想出的最小(纯C)是:
#include <unistd.h>
int main(int argc, char **argv)
{
pause();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是我确信这可以与一些程序集/编译器/ C奥术魔法相形见绌,因为这个程序+堆栈超过180 KB.
试试这个程序:
#include <sys/syscall.h>
.text
.globl _start
.type _start,@function
_start:
mov $SYS_pause,%eax
syscall # pause();
ud2 # crash if pause() returns (should not happen)
Run Code Online (Sandbox Code Playgroud)
保存在一个名为pause.S(大写S)的文件中,然后像这样汇编和链接:
cc -c pause.S
ld -o pause pause.o
Run Code Online (Sandbox Code Playgroud)
这表示在我的机器上消耗了一页内存.此页面可能是一页堆栈空间,因为文本段是从二进制文件映射的,因此不占用RAM.
| 归档时间: |
|
| 查看次数: |
145 次 |
| 最近记录: |