版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1/1指令码编译器优化和生成第一部分指令码编译器优化技术 2第二部分指令码生成器组件 5第三部分中间代码表示优化 9第四部分机器代码生成优化 11第五部分目标平台特性考虑 14第六部分指令融合优化 17第七部分寄存器分配优化 19第八部分循环展开优化 22
第一部分指令码编译器优化技术关键词关键要点寄存器分配优化
1.确定变量活跃范围,识别可供分配的寄存器。
2.使用图着色算法或贪心算法分配寄存器,最大化寄存器利用率,减少内存访问。
3.针对全局和局部变量采用不同的分配策略,提高优化效果。
指令调度优化
1.通过指令重排序消除数据依赖,减少指令等待时间。
2.考虑流水线结构和缓存延迟,优化指令执行顺序,提高处理器利用率。
3.利用预测技术,预测分支结果,提前执行指令,提高指令性能。
循环优化
1.展开或紧凑循环,消除分支开销,优化循环执行效率。
2.针对循环变量进行归纳变量分析,简化循环代码,提升性能。
3.应用循环展开-聚合优化,同时提高指令级并行性和局部性,大幅提升循环性能。
并行性优化
1.识别并行代码片段,自动生成并行指令,充分利用多核处理器的计算能力。
2.优化数据分区和通信,最大化并行代码的性能,提升程序整体吞吐量。
3.考虑同步开销和负载均衡,确保并行代码的高效执行。
指令合并优化
1.将多个指令合并为单个指令,减少指令总数,提高指令执行效率。
2.考虑处理器架构特点,识别可以合并的指令类型,优化指令执行顺序。
3.通过指令流水线和超标量技术,提升合并指令的执行性能。
分支预测优化
1.构建分支目标历史表,记录分支执行历史,预测分支结果。
2.采用动态分支预测或静态分支预测技术,提高预测准确率,优化指令执行路径。
3.通过程序分析和数据挖掘,识别分支预测难点,改进分支预测算法。指令码编译器优化技术
指令码编译器优化技术旨在提升指令码编译器的性能和代码质量。以下是指令码编译器中常用的优化技术:
1.数据流分析
*常量传播:识别并传播不变的常量值,以消除对不需要计算的常量的计算。
*无效代码消除:识别并消除永远不会执行的代码块,例如unreachable代码。
*活动变量分析:确定在特定程序点处处于活动状态的变量,以便为这些变量分配最小化内存空间。
2.控制流优化
*基本块:将代码分为不包含跳转或分支的块,以便进行局部优化。
*控制流图(CFG):表示程序控制流的图形,可以用来识别循环、跳转和分支。
*循环优化:识别循环并应用优化,例如循环展开和循环变换,以减少循环开销和提高性能。
3.指令调度
*指令流水线:重叠指令的执行,以提高执行吞吐量。
*指令队列:存储即将执行的指令,以缓解流水线停顿。
*指令重新排序:重新安排指令的顺序,以最大化资源利用率和减少指令延迟。
4.寄存器分配
*图着色:为变量分配寄存器,以最小化寄存器冲突和最大化寄存器利用率。
*全局寄存器分配:为整个程序分配寄存器,而不是仅针对单个函数。
*局部寄存器分配:为单个函数分配寄存器,以获得更精确的寄存器利用率分析。
5.内存管理
*存储器别名分析:确定可以同时访问同一内存位置的变量,以便优化内存访问。
*指针分析:分析指针值,以识别对内存位置的引用,从而优化内存访问和提高安全性。
*垃圾回收:自动释放不再使用的内存空间,以避免内存泄漏。
6.优化算法
*贪心算法:在局部最优解的基础上进行决策,以达到整体最优解。
*动态规划:通过分解问题并存储子问题的结果来优化复杂的算法。
*回溯算法:系统地搜索所有可能的解决方案,以找到最佳解决方案。
7.代码生成
*汇编语言生成:将优化后的指令码转换为特定平台的汇编语言。
*机器码生成:将汇编语言转换为特定平台的机器码。
*优化代码生成:应用额外的优化技术,例如指令选择、寄存器窗口和存储器对齐,以生成更高效的代码。
8.其他优化
*类型推断:根据变量的值来推断其类型,以便优化存储器分配和代码生成。
*条件编译:允许根据特定条件编译代码,从而产生针对特定平台或配置的优化代码。
*谱外执行:通过同时执行多个线程或任务来提高程序并行性。第二部分指令码生成器组件关键词关键要点指令编码
1.指令选择:决定最佳指令序列以执行给定操作,考虑指令格式、执行速度和功耗。
2.指令分组:将指令分组以优化处理器流水线,例如将相关指令安排在一起。
3.指令调度:确定指令执行顺序以利用流水线并最大化吞吐量。
寄存器分配
1.寄存器分配:将变量分配到物理寄存器,以减少访存开销并提高性能。
2.颜色图着色:一种图着色算法,用于确定变量是否可以共享寄存器。
3.启发式方法:用于寄存器分配的贪婪或局部搜索算法,以在硬件限制下获得近似最优解。
伪指令优化
1.伪指令识别:识别和处理伪指令,例如数据定义、宏定义和代码段指令。
2.宏展开:将宏定义展开为实际指令,以减少编译时间和代码大小。
3.代码段合并:合并相似的代码段以提高缓存命中率和代码密度。
指令级并行
1.数据并行:利用相同操作对多个数据元素进行操作。
2.控制并行:并行执行分支和循环指令。
3.硬件支持:需要硬件支持,例如多核处理器、矢量单元或SIMD指令集。
内存优化
1.数据布局:优化数据结构和布局以提高缓存命中率和减少访存开销。
2.内存分配:高效分配和管理内存,例如使用内存池或垃圾回收。
3.缓存优化:利用缓存分层和预取机制来提高内存访问速度。
低功耗优化
1.动态电压和频率调节:根据负载情况调整处理器电压和频率以降低功耗。
2.指令级功耗优化:选择低功耗指令和优化指令调度以减少处理器功耗。
3.电源管理:引入电源管理机制,如空闲状态和睡眠模式,以减少处理器在空闲时的功耗。指令码生成器组件
概述
指令码生成器组件负责将中间表示(IR)转换成目标机器特定的指令码。它是一个编译器后端的关键组成部分,其目标是生成高效、紧凑且正确的指令码,同时满足各种约束条件,如寄存器限制、指令长度限制和特定机器架构的语义。
功能
指令码生成器组件主要执行以下功能:
*寄存器分配:确定IR中的变量和临时值应存储在哪些寄存器中,以最小化内存访问和提高性能。
*指令选择:根据目标机器指令集,为IR操作选择最合适的指令。
*指令调度:确定指令的执行顺序,以优化资源利用并减少依赖关系导致的停顿。
*指令发射:生成最终的指令码,包括指令操作码、寻址模式和立即数。
*优化:应用各种优化技术,如常数折叠、死代码消除、公共子表达式消除和循环展开,以提高指令码的效率。
架构
传统方法:在传统编译器中,指令码生成器是一个单一的组件,负责上述所有功能。
现代方法:现代编译器经常采用模块化方法,其中指令码生成器被分解为多个子组件,例如:
*寄存器分配器:专注于寄存器分配问题。
*指令选择器:负责选择合适的指令。
*指令调度器:针对特定的目标机器架构优化指令执行顺序。
*优化器:应用各种优化技术来增强指令码的质量。
算法
寄存器分配:
*图着色算法:将变量和临时值表示为图中的节点,并为每个可用的寄存器分配不同的颜色(寄存器类)。
*贪婪算法:逐个分配变量,选择最频繁使用的变量并为其分配可用寄存器。
*线性扫描算法:扫描IR,并在需要时为变量分配寄存器,同时考虑寄存器溢出和依赖关系。
指令选择:
*贪婪算法:选择第一个匹配IR操作的指令,而不管其效率。
*动态规划算法:考虑对IR操作序列应用不同指令序列的选项,并选择生成最小成本指令码序列的选项。
*基于规则的方法:使用一组规则将IR操作映射到目标机器指令。
指令调度:
*列表调度算法:将指令表示为一个列表,并通过重新排列列表中的指令来优化执行顺序。
*关键路径调度算法:识别指令图中的关键路径,并优先调度这些指令,以减少停顿。
*基于标记的调度算法:使用标记来跟踪指令之间的依赖关系并优化调度。
优化:
*常数折叠:识别并计算IR中的常量表达式,以消除多余的计算。
*死代码消除:识别在最终结果中不会使用的指令并将其删除。
*公共子表达式消除:识别和消除IR中重复计算的子表达式。
*循环展开:将循环展开为多个单独的迭代,以提高并行性和减少控制流开销。
评估
指令码生成器组件的评估标准包括:
*指令码质量:指令码的效率、紧凑性和正确性。
*执行时间:指令码生成器的编译时间。
*可维护性:指令码生成器代码的清晰度和可修改性。
*灵活性:指令码生成器支持不同目标机器架构和指令集的能力。第三部分中间代码表示优化关键词关键要点主题名称:控制流图优化
1.识别和删除冗余代码块和路径。
2.优化循环结构,消除不必要的迭代和依赖关系。
3.应用全局代码动作,如环路分解和函数内联。
主题名称:数据流分析
中间代码表示优化
中间代码表示优化是编译器优化过程中的一项关键技术,旨在提高中间代码的质量,为后续的代码生成和优化奠定坚实基础。优化策略主要集中在以下几个方面:
1.控制流优化
*基本块排序:对基本块进行重新排序,以提高控制流图的局部性,减少指令缓存未命中。
*循环优化:识别和优化循环结构,如循环展开、循环合并、循环剥离和循环逆转。
*分支预测:预测分支目标,并采取措施提高预测准确性。
2.数据流优化
*局部变量分配:为局部变量分配最优的寄存器或内存位置,以减少内存访问和寄存器溢出。
*常量传播:识别并传播常量表达式,以提高代码的可预测性和执行效率。
*公共子表达式消除:消除重复计算的公共子表达式,以减少冗余指令。
3.标识符管理
*符号重命名:为变量和临时变量分配简短、有意义的名称,以提高代码的可读性和可维护性。
*符号表压缩:消除未使用的符号,并压缩符号表大小。
4.寄存器分配
*图着色:将变量映射到可用的寄存器上,以最大化寄存器利用率。
*活值分析:确定一个给定点的活跃变量,以指导寄存器分配决策。
*窥孔优化:在指令序列中查找小的子序列,并应用特定优化,如寄存器合并和指令合并。
5.peephole优化
*指令折叠:合并连续的指令,如将`load`和`add`合并为`addl`。
*指令消除:删除冗余或无用的指令,如空操作或跳转到下一个指令。
*指令替换:用更优的指令序列替换较差的指令序列,如将`addl`替换为`incl`。
6.全局优化
*过程内联:将小型函数内联到调用它们的函数中,以消除函数调用开销。
*尾递归消除:将递归函数的最后一次递归调用转换为循环,以提高执行效率。
*调用图优化:对函数调用图进行优化,如函数内联、函数分离和函数展开。
7.其他优化
*循环展开:将循环体重复多次,以提高指令流水线利用率。
*循环合并:合并相邻的循环,以减少控制流开销。
*循环剥离:将非循环依赖部分从循环中剥离,以提高并行性。
通过应用这些优化策略,编译器可以生成更紧凑、更高效的中间代码,从而改善后续的代码生成和优化过程。第四部分机器代码生成优化关键词关键要点寄存器分配
-确定最佳寄存器分配方案,以最大限度减少内存访问次数和提高执行效率。
-使用图表着色算法、贪婪算法或线性规划技术来分配寄存器。
-考虑局部性,尽可能将频繁使用的变量分配到寄存器中。
指令调度
-确定指令执行的最佳顺序,以避免流水线停滞和提高吞吐量。
-使用循环展开、循环融合或分支预测技术来优化指令流。
-利用动态调度技术,在运行时根据处理器状态重新安排指令。
常量传播
-识别在编译时已知的常量表达式,并将其值直接替换到指令中。
-消除冗余计算,减少指令数量并提高执行速度。
-使用常量折叠算法和数据流分析技术来传播常量。
循环优化
-识别循环,并应用循环展开、循环融合或循环去除等优化技术。
-减少循环迭代次数,提高执行效率,并提高并行化潜力。
-利用循环不变性分析和循环依赖分析来优化循环结构。
尾递归消除
-识别具有尾递归形式的函数,并将其转换为循环。
-释放堆栈空间,防止堆栈溢出,并提高执行效率。
-使用尾调用优化技术和编译器分析来消除尾递归。
指令级并行
-识别指令之间的并行性,并生成同时执行的多个指令。
-利用流水线架构和多核心处理器来提高执行吞吐量。
-使用指令重排序、指令融合或循环展开等技术来创建并行指令流。机器代码生成优化
机器代码生成是编译过程的关键阶段,它将中间代码转换为目标机器的机器代码。为了生成高效且紧凑的代码,编译器执行一系列优化技术。
指令选择
*寄存器分配:将变量分配到寄存器以减少内存访问。
*指令调度:重新排序指令以优化指令流水线。
*死码消除:删除在运行时不会执行的代码。
代码优化
*常量折叠:计算编译时已知的表达式,而不是在运行时计算。
*公共子表达式消除:识别和消除重复的表达式,生成更紧凑的代码。
*强度折减:使用更简单的指令序列替换更复杂的指令,从而提高执行效率。
数据流优化
*可达性分析:确定代码中哪些变量实际上会被使用,从而消除未使用的变量和代码。
*活跃性分析:确定变量在指令序列的每一点是否处于活动状态,以优化寄存器分配。
*局部性优化:识别和利用数据在指令序列中的局部性,以提高缓存性能。
循环优化
*循环展开:复制循环体,以提高指令流水线效率和并行性。
*循环融合:合并具有相同条件的相邻循环,生成更紧凑、更优化的代码。
*循环向量化:将循环中的操作分解为向量指令,以利用SIMD(单指令多数据)架构。
其他优化
*流程内联:将函数体直接插入调用它们的函数中,以减少函数调用开销。
*尾递归消除:将尾递归函数转换为迭代代码,从而减少堆栈消耗和提高效率。
*函数指针优化:通过优化函数指针的调用和间接调用,提高代码的性能。
汇编器优化
汇编器是将汇编语言代码转换为机器代码的程序。它执行一系列优化,包括:
*指令重组:重新排列指令以优化指令流水线。
*分支预测:预测分支的执行方向,从而提高分支处理效率。
*代码对齐:将指令对齐到特定边界,以提高缓存性能。
评估
机器代码生成优化可以显著提高程序的性能、代码大小和内存使用量。有效地应用这些技术可以优化编译器输出,从而生成高效且可靠的代码。第五部分目标平台特性考虑关键词关键要点处理器指令集
-分析目标处理器的指令集,了解其支持的指令类型和操作码格式。
-优化编译器生成的代码以充分利用目标处理器的指令集,减少生成不必要的指令或使用效率较低的指令。
-考虑处理器的寄存器文件大小和可寻址范围,优化代码分配寄存器的策略。
内存层次结构
-了解目标处理器的存储器层次结构,包括Cache、主存储器和外存的组织方式。
-根据目标平台的内存访问时间和带宽限制,优化代码的内存访问模式。
-利用缓存优化技术,例如循环重新排列、循环展开和代码块布局。
处理器架构
-识别目标处理器的架构,例如RISC、CISC或VLIW。
-优化编译器生成的代码以匹配特定架构的特征,例如指令并行、流水线深度和延迟槽。
-利用目标平台的硬件加速器或协处理器,如浮点运算单元或向量处理器。
操作系统特性
-了解目标操作系统的内存管理机制,包括虚拟内存、分页和分段。
-优化代码生成以适应目标操作系统的内存布局和访问限制。
-考虑操作系统提供的系统调用和库函数,并优化代码与这些功能的交互。
并行性和多核处理器
-识别目标平台是否支持并行性和多核处理器。
-优化编译器生成的代码以利用多核处理器并行执行的能力。
-采用并行编程技术,如OpenMP或pthreads,优化代码的并发性。
安全考虑
-了解目标平台的安全性特性,例如地址空间布局随机化(ASLR)和堆保护。
-优化代码生成以符合这些安全特性,防止缓冲区溢出和代码注入等安全漏洞。
-利用编译器提供的安全检查和优化,例如边界检查和堆栈溢出检测。目标平台特性考虑
指令码编译器在生成目标代码时,需要考虑目标平台的特定特性。这些特性包括:
指令集架构(ISA):ISA定义了目标处理器可执行的指令集和寄存器文件。编译器必须生成与目标ISA兼容的目标代码。例如,x86-64ISA具有64位寄存器和复杂的寻址模式,而ARM架构则具有32位寄存器和更简单的寻址模式。
寄存器分配(RA):RA决定了指令如何使用寄存器文件。不同平台具有不同的RA策略,例如:
*静态RA:指令在编译时分配固定寄存器。
*动态RA:指令在运行时分配寄存器,以最大化寄存器利用率。
内存管理单元(MMU):MMU管理虚拟内存,使程序能够访问比物理内存更大的地址空间。编译器必须生成与目标MMU兼容的内存访问指令。
缓存结构:缓存是处理器中的高速存储器,用于存储最近访问的数据。编译器可以通过优化代码布局和指令调度来利用缓存结构,以提高性能。
虚拟化:虚拟化技术允许多个操作系统和应用程序同时在单一物理系统上运行。编译器必须生成可以安全地在虚拟化环境中执行的目标代码。
安全特性:现代处理器包含用于保护系统免受恶意代码攻击的安全特性。编译器必须生成遵循这些安全措施的目标代码,以确保应用程序的安全性。
性能优化:除了考虑目标平台的物理特性外,编译器还必须优化目标代码的性能。这涉及:
*指令调度:安排指令顺序以最大化指令流水线的利用率。
*代码大小优化:生成更小的代码,以便更有效地使用内存。
*循环优化:优化循环结构以提高性能,例如循环展开和循环融合。
*分支预测:预测分支结果以减少分支错误和提高指令流水线的效率。
通过考虑这些目标平台特性,指令码编译器可以生成高效、安全且平台特定的目标代码,从而最大化应用程序在目标平台上的性能。第六部分指令融合优化关键词关键要点【指令分解优化】
1.将复杂的指令分解为多个简单的指令,从而减少指令时延和功耗。
2.通过将复杂指令拆分为更小的指令,可以提高流水线的效率,从而提高性能。
3.采取不同的指令分解策略,可以针对不同的目标(如功耗、性能)进行优化。
【指令调度优化】
指令融合优化
指令融合优化是一种编译器优化技术,通过合并多个指令到一个单一的指令中,减少程序的指令数,从而提高执行效率。
指令融合的基本原理
指令融合基于以下原理:
*语义等价性:融合后的指令必须与原始指令序列语义等价。
*数据依赖性:融合的指令不能存在数据依赖关系,即后面的指令不能依赖于前面的指令结果。
*资源冲突:融合后的指令不能同时使用同一资源,例如寄存器或内存。
指令融合的类型
指令融合可以分为以下几種類型:
*垂直融合:合并连续的指令,例如将加载指令和算术指令合并成一个指令。
*水平融合:合并并行执行的指令,例如将两个独立的算术指令合并成一个指令。
*对角融合:合并不直接相邻的指令,例如将加载指令和分支指令合并成一个指令。
指令融合的实现
指令融合通常在以下编译器阶段实现:
*指令选择:在指令选择阶段,编译器会选择一个适合融合的指令序列。
*指令调度:在指令调度阶段,编译器会将指令重新排序,以满足数据依赖性和资源冲突的要求。
*寄存器分配:在寄存器分配阶段,编译器会为融合后的指令分配寄存器。
指令融合的优点
指令融合优化具有以下优点:
*减少指令数:合并指令可以减少程序中的指令数,从而缩短执行时间。
*提高指令级并行性(ILP):融合后的指令可以并行执行,从而提高指令级并行性。
*减少寄存器占用:合并指令可以减少寄存器占用,从而释放出更多的寄存器用于其他目的。
指令融合的挑战
指令融合优化也存在一些挑战:
*代码膨胀:融合指令可能会导致代码膨胀,因为融合后的指令通常比原始指令更长。
*代码复杂性:融合指令会增加代码复杂性,这可能会影响代码的可读性和可维护性。
*目标平台限制:指令融合优化受目标平台的指令集和微架构限制,并非所有指令都能被融合。
指令融合的评估
指令融合优化效果的评估通常通过以下指标进行:
*性能提升:融合指令的程序执行时间的减少。
*代码大小增长:融合指令后程序代码大小的增加。
*ILP提升:融合指令后程序指令级并行性的提高。
结论
指令融合优化是一种重要的编译器优化技术,可以提高程序的执行效率。通过合并指令,指令融合可以减少指令数,增加指令级并行性,并减少寄存器占用。然而,指令融合优化也存在一些挑战,例如代码膨胀和代码复杂性。在进行指令融合优化时,编译器必须仔细考虑这些因素,以最大限度地提高程序性能。第七部分寄存器分配优化关键词关键要点全局寄存器分配
1.识别需要分配到寄存器的变量,并分析程序中变量的使用规律。
2.根据变量的使用频率和冲突情况,确定每个变量分配到特定的寄存器。
3.使用图着色算法或线性扫描算法等技术,确保寄存器的分配不会产生冲突。
局部寄存器分配
1.在程序的局部范围内,对单个基本块或循环体进行寄存器分配。
2.考虑局部变量的使用规律和可用寄存器数量,优化寄存器分配策略。
3.通过代码移动或寄存器重命名等技术,减少对寄存器的需求,提高寄存器分配效率。
寄存器压力分析
1.通过分析程序代码,预测不同基本块和循环中的寄存器需求。
2.识别可能存在寄存器压力的区域,并采取措施缓解压力,如代码重写或插入spill代码。
3.利用寄存器压力信息指导寄存器分配优化,确保寄存器资源得到合理利用。
寄存器重命名
1.通过将变量分配到不同的虚拟寄存器,消除寄存器冲突。
2.在编译期间,通过名称转换,将虚拟寄存器映射到实际寄存器。
3.提高寄存器的可用性,减少对spill代码的需求,从而优化程序性能。
指令级并行
1.识别并提取程序中可以并行执行的指令。
2.分配不同的寄存器给并行执行的指令,避免寄存器冲突。
3.通过寄存器分配优化,提高指令并行度,提升程序效率。
前沿技术
1.探索基于机器学习和深度学习的寄存器分配方法,实现更准确的寄存器需求预测。
2.结合程序分析技术,识别和利用程序中存在的寄存器分配优化机会。
3.研究跨平台寄存器分配策略,提高不同处理器架构上的程序性能。寄存器分配优化
1.概述
寄存器分配优化是编译器优化中至关重要的一步,其目标是在代码执行过程中尽可能分配最少的寄存器来存储变量,以提升程序性能。它通过在编译时分析程序的变量使用情况,将变量分配到有限数量的可用寄存器中,从而减少了从内存中加载和存储变量的次数。
2.寄存器分配策略
*贪心着色算法:一种简单的寄存器分配算法,将变量逐一分配到寄存器中,当寄存器用完时,发生冲突的变量将被“溢出”到内存中。
*图着色算法:将变量之间的依赖关系表示为一张图,然后将寄存器分配问题转化为图着色问题。该算法通过对图进行着色,将变量分配到不同的寄存器中。
*局部寄存器分配:将函数分解为较小的基本块,并只在每个基本块内进行寄存器分配。这可以减少算法的复杂度,但可能错过跨基本块的优化机会。
3.寄存器分配准则
*频繁性:优先分配频繁使用的变量到寄存器中。
*活跃度:分配时间跨度较长的变量到寄存器中。
*相邻性:如果两个变量经常同时使用,则将它们分配到相邻的寄存器中。
4.溢出处理
当可用寄存器不够时,发生冲突的变量将被“溢出”到内存中。溢出处理策略包括:
*堆栈溢出:使用堆栈来存储溢出的变量。
*寄存器溢出:为溢出的变量分配一个新的寄存器,并将之前存储在该寄存器中的变量溢出到堆栈中。
*循环溢出:如果溢出的变量在循环中经常使用,可以将该变量分配到一个循环变量,并在每次循环迭代时,将变量从内存中加载到寄存器中。
5.优化技术
*全局寄存器分配:在整个程序范围内进行寄存器分配,可以捕获跨函数的优化机会。
*代码布局优化:调整代码顺序,以最小化变量冲突,从而减少溢出。
*局部变量生存分析:确定变量在程序中的生存范围,从而释放未使用的寄存器。
6.优点
*减少内存访问次数,提升程序性能。
*降低指令数量,优化代码大小。
*提升代码的可读性和可维护性。
7.结论
寄存器分配优化是编译器优化中不可或缺的一部分。通过有效分配寄存器,优化器可以显著提升程序性能,优化代码大小,以及提高代码的可读性。第八部分循环展开优化关键词关键要点【循
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 1500字2024年度综合性服务承包协议模板版B版
- 2024年品牌产品销售代理协议样本版B版
- 江南大学《概率论与数理统计Ⅰ》2022-2023学年第一学期期末试卷
- 2024年度混合用地购买合同2篇
- 佳木斯大学《商务日语会话1》2021-2022学年第一学期期末试卷
- 2024年全新工作职责协议协议范本版
- 佳木斯大学《翻译理论与实践》2021-2022学年第一学期期末试卷
- 暨南大学《西班牙语视听说Ⅰ》2021-2022学年第一学期期末试卷
- 暨南大学《经济学原理》2021-2022学年第一学期期末试卷
- 暨南大学《古代中国与外来文明》2021-2022学年第一学期期末试卷
- 珠海市钻孔灌注桩+高压旋喷桩施工方案
- 铸牢中华民族共同体意识学习PPT
- 做一个有温度护士课件
- 药物经济学第六章不确定性分析课件
- 眼科器械的机械清洗课件
- 医疗机构临床实验室生物安全课件
- 北师大版八年级上册一次函数教材分析课件
- 产后盆底肌康复(产后康复课件PPT)
- 指数函数及其性质 一等奖-精讲版课件
- “九小场所”消防安全排查记录表
- 30度-45度-60度角的三角函数值课件
评论
0/150
提交评论