Linux 编程中的栈操作与字符串搜索
1. 循环与字符串操作
在某些操作中,循环会持续执行,直到 ECX 寄存器的值变为 0,这表示整个任务(如显示 224 个字符)已完成。内层和外层循环都会修改 STOSB 指令所使用的寄存器。内层循环在每个字符显示到屏幕后修改 AL 寄存器,使得每次 STOSB 执行时能显示不同的字符。外层循环在每行字符显示完成后修改 EDI(目标索引寄存器),从而将目标字符串拆分为七个独立且不连续的行。
2. 命令行参数与栈检查
2.1 命令行参数的传递
在 Linux 控制台命令提示符下启动程序时,可以在可执行程序的路径名后包含任意数量的参数。例如:
$./showargs1 time for tacos
这里的三个参数跟随程序名,由空格分隔。需要注意的是,这些参数与 I/O 重定向参数不同,I/O 重定向参数需要使用重定向运算符(> 或 <),并由 Linux 单独处理。当程序开始运行时,Linux 会将启动程序时输入的命令行参数传递给程序。
2.2 虚拟内存的两个部分
Linux 使用虚拟内存机制来管理计算机的物理内存。虚拟内存的工作方式是,Linux 可以在计算机的物理内存系统中预留一块内存区域,并指定该内存块的起始地址为 08048000h,程序可以自由使用这块内存,并假设自己是唯一使用该内存的程序。实际上,多个程序可以同时运行,每个程序都可能被告知其内存块从 08048000h 开始,但 Linux 内核会将程序的虚拟地址转换为物理内存地址。 <
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



