实验8-过程调用的机器级表示

过程调用的机器级表示

  1. P将入口参数(实参)放到Q能访问的地方(栈中);

  2. P保存返回地址(压栈),然后将控制转移到Q;

  3. Q保存P的现场,并为自己的非静态局部变量分配空间;

  4. 执行Q的过程体(函数体);

  5. Q恢复P的现场,释放局部变量空间;

  6. Q取出返回地址,将控制转移到P

一个例子

问题描述

实验:编写如下程序,编译、运行、反汇编、调试
(1)分析哪些指令对应上述各步骤(如:将入口参数送入栈中、为非静态局部变量分配空间、保存调用者ebp值等);
(2)画出调用swap过程前后的栈帧结构,标明主要内容,如参数的数值和栈帧地址、ebp和esp的值。
#include <stdio.h>

void swap(int *x,int *y)
{
	int t = *x;
	*x=*y;
	*y=t;
}

void main()
{
	int a=16,b=28;
	printf("before:\ta=%d\tb=%d\n",a,b);
	swap(&a,&b);
	printf("after:\ta=%d\tb=%d\n",a,b);
}

实验过程

(1)单步调试,程序断点停留在swap调用位置处:显示当前esp、ebp和eip内容,画出当前栈帧结构

在这里插入图片描述
在这里插入图片描述

(2)执行call指令之前的五条指令(si单机器指令运行):显示esp、ebp和eip内容,画出当前栈帧结构

在这里插入图片描述
在这里插入图片描述


(3)执行call指令:显示esp、ebp和eip内容,画出当前栈帧结构

在这里插入图片描述
在这里插入图片描述

(4)进入swap过程执行,执行前两条指令:显示esp、ebp和eip内容,画出当前栈帧结构

前两条指令是保存ebp旧值改变ebp指向,为过程swap划分空间起始地址
在这里插入图片描述
在这里插入图片描述

执行第三条指令:显示esp、ebp和eip内容,画出当前栈帧结构

在这里插入图片描述
在这里插入图片描述

(5)执行swap过程体,运行至leave指令处:显示esp、ebp和eip内容,画出当前栈帧结构

在这里插入图片描述
在这里插入图片描述

(6)执行leave指令:显示esp、ebp和eip内容,画出当前栈帧结

在这里插入图片描述
在这里插入图片描述

(7)执行ret指令:显示esp、ebp和eip内容,画出当前栈帧结构

在这里插入图片描述
在这里插入图片描述

(8)执行call指令后的add指令:显示esp、ebp和eip内容,画出当前栈帧结构

在这里插入图片描述
在这里插入图片描述

处理层协议( transaction Layer specification transaction Layer specificationtransaction Layer specificationtransaction Layer specification transaction Layer specificationtransaction Layer specification transaction Layer specificationtransaction Layer specificationtransaction Layer specification transaction Layer specificationtransaction Layer specificationtransaction Layer specificationtransaction Layer specificationtransaction Layer specification transaction Layer specificationtransaction Layer specificationtransaction Layer specification transaction Layer specificationtransaction Layer specificationtransaction Layer specification transaction Layer specification) ◆TLPTLPTLP概况。 ◆寻址 定位和路由导向 定位和路由导向 定位和路由导向 定位和路由导向 。 ◆i/o,memory,configuration,message requesti/o,memory,configuration,message requesti/o,memory,configuration,message requesti/o,memory,configuration,message requesti/o,memory,configuration,message requesti/o,memory,configuration,message request i/o,memory,configuration,message request i/o,memory,configuration,message requesti/o,memory,configuration,message request i/o,memory,configuration,message requesti/o,memory,configuration,message requesti/o,memory,configuration,message requesti/o,memory,configuration,message requesti/o,memory,configuration,message requesti/o,memory,configuration,message requesti/o,memory,configuration,message request i/o,memory,configuration,message requesti/o,memory,configuration,message requesti/o,memory,configuration,message requesti/o,memory,configuration,message requesti/o,memory,configuration,message request i/o,memory,configuration,message requesti/o,memory,configuration,message requesti/o,memory,configuration,message request i/o,memory,configuration,message requesti/o,memory,configuration,message requesti/o,memory,configuration,message request i/o,memory,configuration,message requesti/o,memory,configuration,message requesti/o,memory,configuration,message requesti/o,memory,configuration,message requesti/o,memory,configuration,message request、completion completioncompletioncompletioncompletioncompletioncompletioncompletioncompletion详解。 详解。 ◆请求和 ◆请求和 响应 处理机制。 处理机制。 处理机制。 ◆virtual channel(vc)Mechanism虚拟通道机制。 ◆data integrity数据完整性。
<think>好的,我需要帮助用户了解PCIE协议的基础知识和学习资源。首先,我要整理已有的引用资料,看看哪些内容可以直接使用。引用1提到了事务层数据包的组包和解包,引用2讨论了VDM和其头部结构,引用3涉及端口仲裁,引用4提供了NVMe协议的文档链接。虽然NVMe不是PCIE直接相关,但可能作为补充资源。 用户需要入门资料和教程,我应该从基础概念开始,分步骤介绍PCIE协议的结构,比如分层模型、关键机制等。然后推荐学习资源,包括官方文档、书籍、在线教程和实践工具。需要确保回答结构清晰,符合用户要求的系统级指令,比如正确使用LaTeX格式,生成相关问题。 需要检查是否有遗漏的关键点,比如PCIE的应用场景或常见问题。同时,确保所有技术术语正确,比如事务层、数据链路层、物理层的功能。可能还需要补充一些学习建议,如结合实验或项目来加深理解。最后,生成的相关问题要围绕PCIE的学习难点、版本差异、实际应用和调试方法展开。</think>### PCIe协议入门学习指南 #### 一、PCIE协议基础概念 1. **分层架构** - *事务层*:负责数据包(TLP)的组包和解包,支持读写请求、配置操作等功能[^1] $$ \text{TLP结构} = \text{Header} + \text{Data Payload} + \text{ECRC} $$ - *数据链路层*:通过ACK/NAK机制保证数据完整性 - *物理层*:定义电气特性与编码方案(如128b/130b编码) 2. **关键机制** - 流量控制:采用信用量(Credit)机制避免数据溢出 - 虚拟通道(Virtual Channel):引用[3]提到的端口仲裁机制支持多通道优先级控制 - 错误检测与恢复:包括ECRC校验和链路重训练 #### 二、学习资源推荐 1. **官方文档** - PCI-SIG官网提供协议规范下载(需注册会员) - NVMe协议文档(引用[4])可作为存储领域应用延伸学习 2. **中文教程** - 《PCI Express体系结构导读》(王齐著) - 博客文章《PCIE学习笔记》系列(引用[3]) 3. **实践工具** ```python # Wireshark抓包过滤器示例 pcie.dtlp || pcie.utlp ``` - FPGA开发板配套PCIE IP核(如Xilinx UltraScale+) #### 三、学习路径建议 1. **基础阶段**(2-4周) - 掌握TLP/DLLP格式(引用[1][2]) - 理解配置空间访问机制 2. **进阶阶段**(1-2月) - 分析链路训练过程 - 学习QoS实现原理(引用[3]的VC仲裁) 3. **实战阶段** - 使用PCIe协议分析仪捕获真实流量 - 通过FPGA实现端点设备
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值