.cmd文件通俗解释
1·什么是cmd文件,它有什么作用。
1·什么是CMD文件,它有什么作用。
CMD文件是用来说明对应的对应的代码、数据、变量的存放空间。
它包括两个指令SECTOINS和MEMORY。
如果把RAM和ROM看成是两个仓库的话,那MEMORY指令就是把这两个仓库再分成不同的区域。
如果把不同的代码段是看成一件件货物的话,那么SECTOINS指令则指出了这些货物对应的存放位置。
.cmd文件由汇编器产生的COFF格式的OBJ文件中的段作为构造块,当有多个文件进行链接时,链接器会将输入段结全在一起产生可执行的COFF输出模块,然后链接器为各输出段选择存储器地址。
1.1 MEMORY指令说明存储器(MEMORY)伪指令,用来定义目标系统的存储器空间。
MEMORY可以定义存储器的区域,并指定起始地址和长度。
MEMORY伪指令的一般语法:MEMORY{PAGE 0: name1[(attr)]:origin=constant, length=constant;PAGE n: name1[(attr)]:origin=constant, length=constant;}PAGEn中的页号n最大为255。
每个PAGE代表一个完全独立的地址空间。
通常PAGE0为程序存储器,PAGE1为数据存储器。
Name1:存储器区间名。
可包含8个字符。
不同PAGE可以取同样的name1,但在同一个PAGE 内区间名不可以相同。
Attr:可选项。
规定存储器属性。
R,可以对存储器执行读操作W,可以对存储器执行写操作X,破除可以装入可执行的程序代码I,规定可以对存储器进行初始化Origin:起始地址。
Length:区间长度。
初始化段用SECTIONS可定位两次:装入和运行。
如:一些关键的执行代码必须装在系统的ROM中,但希望在较快的RAM中运行。
未初始化段只可被定位一次。
自己写的关于LF2406A的.cmd文件MEMORY{PAGE 0: VECS: origin=0h, length=40h ;中断向量表,40h~43h为安全代码;或保留代码区,复位向量是0h和1h FLASH: origin=44h, length=0ffbch ;32KflashSARAM: origin=8000h, length=800h ;当PON=1&&DON=0,;SARAM映射为程序存储空间B0: origin=ff00h, length=100h ; 256 WORD DARAM,CNF=1时PAGE 1: MMRS: origin=0h, length=60h ;内部映射寄存器,或保留区间B2: origin=60h, length=20h ;32 WORD DARAMB0: origin=200h, length=100h ;256 WORD DARAM,CNF=0时B1: origin=300h, length=100h ;256 WORD DARAMSARAM: origin=800h, length=800h ;2K WORD SARAM,DON=1&&PON=0PF1:origin=7000, length=230h ;外设帧1EV A: origin=7400, length=32h ;外设帧2EVB: origin=7500, length=32h ;外设帧3}内部的所有的存储器都定义过了,最后的三个PF1、EV A、EVB可以不用定义的,因为是这外设的寄存器映射。
CMD命令文件详解
CMD 命令文件解析CMD 文件的专业名称叫做链接器配置文件,用以存放链接器的配置信息,简称命令文件。
其中比较关键的就是MEMORY、SECTIONS两个伪指令的使用。
MEMORY和SECTIONS 的相关语句必须使用大写字符。
MEMORY是用以配置目标存储器的,而SECTIONS是用以指定段的存放位置的。
1 存储空间的配置DSP存储器分为三个独立选择的空间:程序空间、数据空间和I/O空间,其中程序存储器存放待执行的指令和执行中所用的系数(常数),可使用片内或片外的RAM、ROM、EPROM 等构成;数据存储器存放指令执行中产生的数据,可使用片内或片外的RAM和ROM来构成。
I/O存储器存放与映像外围接口相关的数据,也可以作为附加的数据存储空间来使用。
下表是TMS320F28335的存储空间分布:TMS320F28335的存储空间分布:2 BootRomBootRom 是位于存储器地址0x3F E000 ~ 0x3F FFFF处的8K * 16位存储区域。
并利用M0区域的0x0002 ~ 0x004E作为其Boot程序的堆栈和ebss区。
其内存映射如下:3 Cmd 文件的分配方法TI公司新的汇编器和链接器创建的目标文件采用一种COFF(通用目标文件格式),该目标文件格式更利于模块化编程,为管理代码段和目标系统存储器提供了强有力和灵活的编程方法。
用户可以通过编写链接命令文件(cmd文件)将链接信息放在一个文件中,以便在多次使用同样的链接信息时调用。
在命令文件中使用两个十分有用的伪指令MEMORY 和SECTIONS,来指定实际应用中的存储器结构和进行地址的映射。
M EMORY用来指定目标存储器结构,MEMORY下可以通过PAGE选项配置地址空间。
链接器把每一页都当作一个独立的存储空间,通常情况下,PAGE0 代表程序存储器用来存放程序,PAGE1 代表数据存储器,用来存放数据。
由编译器生成的可重定位的代码和数据块叫做“SECTIONS”(段),SECTIONS 用来控制段的构成与地址分配。
cmd 文件命名规则
cmd 文件命名规则(原创实用版)目录1.CMD 文件的概念与特点2.CMD 文件的命名规则3.CMD 文件的扩展名4.CMD 文件的应用领域5.总结正文1.CMD 文件的概念与特点CMD 文件是 Windows 操作系统中的一种批处理文件格式,它是一种文本文件,包含了一系列的命令和操作。
CMD 文件可以执行多个命令,使得用户可以方便地在一个文件中完成一系列的任务。
这种文件格式的优势在于,它能够让用户以非交互式的方式执行一系列操作,从而提高工作效率。
2.CMD 文件的命名规则CMD 文件的命名规则相对简单。
一般来说,它的文件扩展名为.cmd。
在文件名中,用户可以自由地使用字母、数字和下划线等字符,但是需要避免使用特殊字符或中文字符。
此外,文件名不能包含空格,因为这会导致命令解释器无法正确识别文件。
3.CMD 文件的扩展名CMD 文件的扩展名是.cmd。
这个扩展名告诉操作系统,该文件是一个批处理文件,包含了一系列的命令和操作。
当用户双击或通过命令提示符执行该文件时,操作系统会自动调用命令解释器来解析并执行文件中的命令。
4.CMD 文件的应用领域CMD 文件广泛应用于 Windows 操作系统的各个领域。
例如,在网络管理、系统维护、软件开发等场景中,都可能会涉及到 CMD 文件的使用。
特别是在批量处理任务和自动化操作方面,CMD 文件的优势尤为明显。
用户只需编写一个 CMD 文件,就可以轻松地完成一系列复杂的任务。
5.总结CMD 文件是 Windows 操作系统中的一种批处理文件格式,具有易于使用、高效便捷等特点。
了解 CMD 文件的命名规则和扩展名,可以帮助用户更好地管理和使用这种文件格式。
CMD文件
第二章CMD文件2.1、CMD文件综述CMD文件的主要作用是沟通物理存储器和逻辑地址的桥梁。
CMD文件反映了实际电路中存储单元的大小,并且通过阅读CMD文件可以得到系统中存储器的分配情况,特别是配合以MAP文件就可非常方便地得到系统资源的使用情况,有利于优化系统配置。
另外,由于C28X推荐使用C语言编程,就存在程序转化分段的问题,也在CMD中得到落实。
本实验系统采用的是瑞泰的CMD程序,并且是针对一个实验系统的通用CMD文件。
2.2、例解CMD文件1、寄存器区// 片上外设寄存器结构体与存储器分配的对应关系MEMORY //反映存储器空间范围、描述系统实际的硬件资源{PAGE 0: //第0页:程序空间存储器PAGE 1: //第1页:地址空间存储器//芯片仿真设定用寄存器(始于0x0000880 长:0x000180)DEV_EMU : origin = 0x000880, length = 0x000180//中断向量表PIE_VECT : origin = 0x000D00, length = 0x000100//闪存寄存器组FLASH_REGS : origin = 0x000A80, length = 0x000060//保密位寄存器组CSM : origin = 0x000AE0, length = 0x000010// 外部扩展寄存器组XINTF : origin = 0x000B20, length = 0x000020//定时器0 寄存器组CPU_TIMER0 : origin = 0x000C00, length = 0x000008//PIE控制寄存器组PIE_CTRL : origin = 0x000CE0, length = 0x000020 ///增强型CAN模块寄存器组ECANA : origin = 0x006000, length = 0x000040ECANA_LAM : origin = 0x006040, length = 0x000040ECANA_MOTS : origin = 0x006080, length = 0x000040 ECANA_MOTO : origin = 0x0060C0, length = 0x000040ECANA_MBOX : origin = 0x006100, length = 0x000100//系统控制寄存器组SYSTEM : origin = 0x007010, length = 0x000020//外设接口寄存器组SPIA : origin = 0x007040, length = 0x000010//异步串行通信接口寄存器组SCIA : origin = 0x007050, length = 0x000010//外部中断设定寄存器组XINTRUPT : origin = 0x007070, length = 0x000010//多功复用引脚选择寄存器组GPIOMUX : origin = 0x0070C0, length = 0x000020//多功能引脚数据寄存器组GPIODAT : origin = 0x0070E0, length = 0x000020//模拟数字转换寄存器组ADC : origin = 0x007100, length = 0x000020// 事件管理寄存器组EV A : origin = 0x007400, length = 0x000040EVB : origin = 0x007500, length = 0x000040//异步串行通信接口B寄存器组SCIB : origin = 0x007750, length = 0x000010//多通道缓冲接口寄存器组MCBSPA : origin = 0x007800, length = 0x000040//密码保护寄存器组CSM_PWL : origin = 0x3F7FF8, length = 0x000008}SECTIONS //建立与程序一一对应的关系、描述段是如何定位{PieVectTableFile : > PIE_VECT, PAGE = 1/*** Peripheral Frame 0 Register Structures ***///在头文件中可以找到DevEmuRegsFile的定义DevEmuRegsFile : > DEV_EMU, PAGE = 1FlashRegsFile : > FLASH_REGS, PAGE = 1CsmRegsFile : > CSM, PAGE = 1XintfRegsFile : > XINTF, PAGE = 1CpuTimer0RegsFile : > CPU_TIMER0, PAGE = 1PieCtrlRegsFile : > PIE_CTRL, PAGE = 1/*** Peripheral Frame 1 Register Structures ***/SysCtrlRegsFile : > SYSTEM, PAGE = 1SpiaRegsFile : > SPIA, PAGE = 1SciaRegsFile : > SCIA, PAGE = 1XIntruptRegsFile : > XINTRUPT, PAGE = 1GpioMuxRegsFile : > GPIOMUX, PAGE = 1GpioDataRegsFile : > GPIODAT PAGE = 1AdcRegsFile : > ADC, PAGE = 1EvaRegsFile : > EV A, PAGE = 1EvbRegsFile : > EVB, PAGE = 1ScibRegsFile : > SCIB, PAGE = 1McbspaRegsFile : > MCBSPA, PAGE = 1/*** Peripheral Frame 2 Register Structures ***/ECanaRegsFile : > ECANA, PAGE = 1ECanaLAMRegsFile : > ECANA_LAM PAGE = 1ECanaMboxesFile : > ECANA_MBOX PAGE = 1ECanaMOTSRegsFile : > ECANA_MOTS PAGE = 1ECanaMOTORegsFile : > ECANA_MOTO PAGE = 1/*** Code Security Module Register Structures ***/CsmPwlFile : > CSM_PWL, PAGE = 1}2、程序区/*// FILE: F2812_EzDSP_RAM_lnk.cmd//定位C程序在存储器中的位置-l rts2800.lib //链接库文件rts2800.lib-w //-stack 400h //栈大小为400h-heap 100 //堆大小为100MEMORY{PAGE 0 :///RAMM0 : origin = 0x000000, length = 0x000400//RAMM0 : origin = 0x3f6000, length = 0x001000BEGIN : origin = 0x3F8000, length = 0x000002/*BEGIN : origin = 0x3F7FF6, length = 0x000002*///PRAMH0 : origin = 0x3f8002, length = 0x001000PRAMH0 : origin = 0x81000, length = 0x002000RESET : origin = 0x3FFFC0, length = 0x000002 /* part of boot ROM (MP/MCn=0) or XINTF zone 7 (MP/MCn=1) */VECTORS : origin = 0x3FFFC2, length = 0x00003E /* part of boot ROM (MP/MCn=0) or XINTF zone 7 (MP/MCn=1) */PAGE 1 :/* For this example, H0 is split between PAGE 0 and PAGE 1 */RAMM1 : origin = 0x000400, length = 0x000400DRAMH0 : origin = 0x3f8002, length = 0x001ffcDRAMH1 : origin = 0x83000, length = 0x004ffc}SECTIONS{codestart : > BEGIN, PAGE = 0//ramfuncs : > PRAMH0 PAGE = 0.text : > PRAMH0, PAGE = 0//文本段.cinit : > PRAMH0, PAGE = 0//.pinit : > PRAMH0, PAGE = 0.switch : > PRAMH0, PAGE = 0.reset : > RESET, PAGE = 0, TYPE = DSECT /* not used, */ .stack : > RAMM1, PAGE = 1.ebss : > DRAMH1, PAGE = 1.econst : > DRAMH0, PAGE = 1.esysmem : > DRAMH0, PAGE = 1.const : > DRAMH0, PAGE = 1.sysmem : > DRAMH0, PAGE = 1.cio : > DRAMH0, PAGE = 1}1..cinit 存放C程序中的变量初值和常量2..const 存放C程序中的字符常量、浮点常量和用const声明的常量3..text 存放C程序的代码4..bss 为C程序中的全局和静态变量保留存储空间5..far 为C程序中用far声明的全局和静态变量保留空间6..stack 为C程序系统堆栈保留存储空间,用于保存返回地址、函数间的参数传递、存储局部变量和保存中间结果7..sysmem用于C程序中malloc、calloc和realloc函数动态分配存配空间2.3文件类型.pjt CCS使用的工程文件.c C程序源文件.asm 汇编程序源文件.h 头文件.lib 库文件.cmd 连接命令文件.obj 目标文件.out 可执行文件.wks 工作区文件.dat 数据文件.map 映射文件2.4、常用命令。
CMD命令在网络安全中的应用
CMD命令在网络安全中的应用随着互联网的飞速发展,网络安全问题日益凸显。
在这个信息时代,保护个人隐私和企业数据安全变得尤为重要。
CMD命令作为一种强大的工具,广泛应用于网络安全领域。
本文将探讨CMD命令在网络安全中的应用,并介绍一些常见的使用场景。
一、网络安全概述网络安全是指保护计算机网络及其相关设备、系统和数据不受非法侵入、破坏和泄露的一种综合性技术和管理措施。
随着黑客技术的不断进步,网络安全问题变得日益复杂。
为了应对这些威胁,网络管理员和安全专家需要掌握各种工具和技术,以保护网络的安全性。
二、CMD命令的基本概念CMD命令,全称为命令提示符,是Windows操作系统中的一个命令行界面。
通过CMD命令,用户可以直接与操作系统进行交互,执行各种系统管理任务。
CMD命令拥有丰富的功能和灵活的操作方式,成为网络安全领域中不可或缺的工具之一。
三、1. 网络扫描与漏洞检测CMD命令中的ping命令可以用于检测网络设备的连通性。
通过向目标主机发送数据包,并根据返回的结果判断主机是否在线。
此外,CMD命令还可以使用tracert命令来跟踪数据包的路径,帮助发现网络中的故障点。
这些功能对于网络管理员来说非常重要,可以及时发现网络中的问题并进行修复。
2. 网络流量分析CMD命令中的netstat命令可以用于查看网络连接状态和网络活动情况。
通过分析网络流量,网络管理员可以及时发现异常连接和不明确的活动,防止恶意软件和黑客攻击。
此外,CMD命令还可以使用nslookup命令来查询域名的IP地址,帮助识别潜在的网络威胁。
3. 安全漏洞修复CMD命令中的sfc命令可以用于扫描和修复系统文件的完整性。
在网络安全中,黑客常常通过操纵系统文件来实施攻击。
通过使用sfc命令,网络管理员可以检测并修复被篡改的系统文件,提高系统的安全性。
4. 密码破解与防护CMD命令中的net命令可以用于管理本地用户和组。
网络管理员可以使用net命令来重置用户密码、添加用户账户等操作,以确保用户账户的安全性。
CMD文件的原理dspcmddspcmd文件...
CMD文件的原理dspcmddspcmd文件...CMD文件的原理玄德(网名)于2009 年3 月一、前言开发 TI 公司的 DSP 芯片,肯定要编写或者修改 CMD 文件,这是在单片机开发中没有碰到过的新事物,也是学习DSP的难点。
面对里面种类繁多、名称各异、来历不明、作用不清、功能千差万别的存储器、区域和变量、寄存器,初学者往往都会一头雾水。
甚至很多人已经把项目成功地完成了,对CMD文件仍然是一知半解。
笔者也经历了极度困惑的过程,曾经大量地看书,下载资料,分析所能搜集到的CMD源文件。
可惜的是,无论是TI 公司的原始文档,还是网上的资料,或者BBS的帖子,都没有透彻地说明CMD 文件的原理和使用,只说“然” ,要靠自己去体会“所以然” ,去“悟” 。
终于有一天,我悟到了,也许只是“一些” 。
现在,我把自己的“一些”写下来。
我将细致而通俗地说明CMD 文件的原理,给您“鱼” ,更给您“渔” ,一步步地引导象我当初一样的初学者。
我将以 TI 的 2407 为对象展开说明,对于 TI 公司其他型号、其他系列的 DSP,道理是完全相同的。
用时下学术界最最最流行的语式,叫做“基于2407”——这个词起源于英文的“based on” ,或“something based” ,被我们大量地引用,以至于令人反胃了——我们美妙、绚烂的语言,现在只剩下“基于”了。
笔者水平有限,但保证会用心去写,您会看到很多别处没有的思路和信息,相信会基本打通初学者的任督二脉。
本文适用于那些有单片机的开发基础、刚开始学习 DSP 的初学者。
如果你还不知道程序空间,数据空间这些名词,可能就比较困难了。
二、CMD文件的起源在DSP系统中,存在大量的、各式各样的存储器,CMD文件所描述的,就是开发工程师对物理存储器的管理、分配和使用情况。
有必要先复习一下存储器的知识。
目前的物理存储器,种类繁多,原理、功能、参数、速度各不相同,有 PROM、 EPROM、 EEPROM、 FLASH、NAND FLASH、 NOR FLASH等(ROM 类),还有SRAM、DRAM、SDRAM、DDR、DDR2、FIFO 等(RAM 类)。
CMD文件与MAP文件
CMD文件与MAP文件一 CMD文件CMD的专业名称叫链接器配置文件,是存放链接器的配置信息,我们简称为命令文件,CMD文件是用来标示实际存在目标系统中且可被使用的存储器范围,告诉链接程序怎么计算地址和分配空间。
它包括三个部分:(1)输入、输出定义:.obj文件——链接器要链接的目标文件;.lib文件——链接器要链接的库文件;.map文件——链接器生成的交叉索引文件;.out文件——链接器生成的可执行代码。
这部分可通过CCS中的Build Option菜单进行设置(2)MEMORY命令描述系统实际的硬件资源(3)SECTIONS命令:描述“段”如何定位。
MEMORY用来建立目标存储器的模型, MEMORY指令可以定义目标系统的各种类型的存储器,及容量。
MEMORY的语法如下:MEMORY{PAGE 0:name 0 [attr] : origin = constant, length = constantPAGE n:name n [attr] : origin = constant, length = constant}PAGE n:标示存储空间,n<255;PAGE 0为程序存储空间;PAGE 1为数据存储空间。
Name:存储空间名称。
Attr存储空间属性:只读R,只写W,可包含可执行代码X,可以被初始化I。
orgin:用来定义存储空间的起始地址;Lenth:用来定义存储空间的长度。
SECTIONS指令就可以根据这个模型来安排各个段的位置。
SECTIONS指令的语法如下:SECTIONS{.vectors: {}>VECS PAGE0;}注:“.”加不加都可以;{}表示段的全部,也可以将{}省略。
SECTIONS必须用大写字母,其后的大括号里是输出段的说明性语句,每一个输出段的说明都是从段名开始,段名之后是如何对输入段进行组织和给段分配存储器的参数说明。
二MAP文件MAP文件是CCS软件编译后产生的有关DSP用到所有程序、数据及IO空间的一种映射文件。
CMD文件的作用
分类:默认栏目2007.8.13 17:06 作者:wind | 评论:0 | 阅读:1218在DSP里,程序执行过程中也有好多地方需要跳转,所以需要跳转的目标地址。
如果你在编程序时知道你所要跳转的地址,那就更好的,但实际上,这是很不好控制的。
所以就产生了.CMD。
它有一个最大的好处,可以把每个段分配地址,所以比如你想从一个段跳到另一个段的时候,就很方便的知道这个段的起始地址。
CMD 它是用来分配rom和ram空间用的,告诉链接程序怎样计算地址和分配空间.所以不同的芯片就有不同大小的rom和ram.放用户程序的地方也不尽相同.所以要根据你的芯片进行修改.cmd文件分两部分.MEMORY和SECTIONS.MEMORY{PAGE 0 ..........PAGE 1.........}SECTIONS{SECTIONS{.vectors ..................reset .................................}MEMORY是用来指定芯片的rom和ram的大小和划分出几个区间.PAGE 0 对应rom;PAGE 1对应ramPAGE 里包含的区间名字与其后面的参数反映了该区间的起始地址和长度.如: PAGE 0 : VECS(区间名字): origin(起始地址) = 0h , length (长度)=040h /*VECTORS*/ SECTIONS:(在程序里添加下面的段名如.vectors.用来指定该段名以下,另一个段名以上的程序(属于PAGE0)或数据(属于PAGE1)放到“>”符号后的空间名字所在的地方。
如引用字段名“.vectors ”的程序或数据将被放到VECS ,VECS是PAGE0即是ROM空间00H至40H 的地方SECTIONS{.vectors : { } > VECS PAGE 0 /* Interrupt vector table */.reset : { } > VECS PAGE 0 /* Reset code */............}.vectors,.reset都是段名。
cmd的常用功能和命令
cmd的常用功能和命令CMD是大多数Windows操作系统中可用的命令行解释器应用程序,全称为command,意思是命令提示符。
用户们可以通过此程序来运行一些命令对电脑系统进行设置等。
CMD的一些常用功能和命令包括:1. mkdir:用于创建新的目录或文件夹,命令格式为“mkdir 目录名”。
2. cd:用于进入指定的目录,命令格式为“cd 目录路径”。
3. dir:用于查看当前目录的文件和子目录列表,命令格式为“dir”。
4. del:用于删除指定的文件,命令格式为“del 文件名”。
5. copy:用于复制文件,命令格式为“copy 源路径目标路径”。
6. move:用于移动文件,命令格式为“move 源路径目标路径”。
7. type:用于显示文本文件的内容。
8. ipconfig:用于查询本机IP地址。
9. net share:用于查看共享资源,也可以删除已共享的文件夹。
10. nslookup:用于检查网站IP地址。
11. netsh wlan show profiles 和netsh wlan show profile name="xxx" key=clear:用于查看已连接的wifi 密码。
此外,CMD还有更多的命令和功能,如设定档案或目录的存取权限(chmod)、在档案中查找字符串(grep)、档案文件比较(diff)、档案搜寻(find)、查看当前日期和时间(date)、查询当前登录的用户及其登录时间地点(who 和w)、查看自己的账号名称(whoami)、查看某人的组(groups)、更改密码(passwd)、查看自己执行过的命令(history)、显示进程状态(ps)、停止某进程(kill)等。
请注意,使用CMD命令时需要谨慎,特别是涉及删除、移动或修改文件和目录的命令,因为这些操作可能会导致数据丢失。
在执行任何重要操作之前,最好先备份相关数据。
同时,某些命令可能需要管理员权限才能执行。
windows批处理文件(.bat.cmd)详解
windows批处理文件(.bat.cmd)详解bat是dos下的批处理文件.cmd是nt内核命令行环境的另一种批处理文件从更广义的角度来看,unix的shell脚本以及其它操作系统甚至应用程序中由外壳进行解释执行的文本,都具有与批处理文件十分相似的作用,而且同样是由专用解释器以行为单位解释执行,这种文本形式更通用的称谓是脚本语言。
所以从某个程度分析,batch, unix shell, awk, basic, perl 等脚本语言都是一样的,只不过应用的范围和解释的平台各有不同而已。
甚至有些应用程序仍然沿用批处理这一称呼,而其内容和扩展名与dos的批处理却又完全不同。
===================================首先批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部分时候就好象我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创建和修改批处理文件。
==== 注 ===================批处理文件中完全可以使用非dos命令,甚至可以使用不具有可执行特性的普通数据性文件,这缘于windows系统这个新型解释平台的涉入,使得批处理的应用越来越"边缘化"。
所以我们讨论的批处理应该限定在dos环境或者命令行环境中,否则很多观念和设定都需要做比较大的变动。
========================其次,批处理文件是一种简单的程序,可以通过条件语句(if)和流程控制语句(goto)来控制命令运行的流程,在批处理中也可以使用循环语句(for)来循环执行一条命令。
当然,批处理文件的编程能力与C 语言等编程语句比起来是十分有限的,也是十分不规范的。
批处理的程序语句就是一条条的DOS命令(包括内部命令和外部命令),而批处理的能力主要取决于你所使用的命令。
什么是cmd,及其作用
什么是cmd,及其作用cmd是电脑命令行提示符,学DOS系统操作,cmd命令提示符是不可或缺的。
下面是店铺跟大家分享的是什么是cmd,及其作用,欢迎大家来阅读学习。
什么是cmd,及其作用一工具/原料电脑方法/步骤cmd命令提示符可以很方便快捷的通过电脑开始搜索出输入cmd 进入命令窗口对电脑进行控制winver---------检查Windows版本wmimgmt.msc----打开windows管理体系结构wscript--------windows脚本宿主设置write----------写字板winmsd---------系统信息winchat--------XP自带局域网聊天mem.exe--------显示内存使用情况Msconfig.exe---系统配置实用程序mplayer2-------简易widnows media player mspaint--------画图板mstsc----------远程桌面连接magnify--------放大镜实用程序mmc------------打开控制台mobsync--------同步命令什么是cmd,及其作用二cmd 命令大全gpedit.msc-----组策略sndrec32-------录音机Nslookup-------IP地址侦测器explorer-------打开资源管理器logoff---------注销命令tsshutdn-------60秒倒计时关机命令lusrmgr.msc----本机用户和组services.msc---本地服务设置oobe/msoobe /a----检查XP是否激活notepad--------打开记事本cleanmgr-------垃圾整理net startmessenger----开始信使服务compmgmt.msc---计算机管理net stopmessenger-----停止信使服务conf-----------启动netmeetingdvdplay--------DVD播放器charmap--------启动字符映射表diskmgmt.msc---磁盘管理实用程序calc-----------启动计算器dfrg.msc-------磁盘碎片整理程序chkdsk.exe-----Chkdsk磁盘检查devmgmt.msc---设备管理器regsvr32 /u *.dll----停止dll文件运行drwtsn32------系统医生rononce -p ----15秒关机dxdiag---------检查DirectX信息regedt32-------注册表编辑器Msconfig.exe---系统配置实用程序rsop.msc-------组策略结果集mem.exe--------显示内存使用情况regedit.exe----注册表winchat--------XP自带局域网聊天progman--------程序管理器winmsd---------系统信息perfmon.msc----计算机性能监测程序winver---------检查Windows版本sfc /scannow-----扫描错误并复原winipcfg-------IP配置taskmgr-----任务管理器(2000/xp/2003)command--------cmdfsmgmt.msc共享文件夹netstat -an----查看端口osk屏幕键盘install.asp----修改注册网页eventvwr.msc时间查看器secpol.msc本地安全设置services.msc服务2Kaccwiz.exe >辅助工具向导acsetups.exe > acs setup dcom server executable actmovie.exe >直接显示安装工具append.exe >允许程序打开制定目录中的数据arp.exe >显示和更改计算机的ip与硬件物理地址的对应列表at.exe >计划运行任务atmadm.exe >调用管理器统计attrib.exe >显示和更改文件和文件夹属性autochk.exe >检测修复文件系统autoconv.exe >在启动过程中自动转化系统autofmt.exe >在启动过程中格式化进程autolfn.exe >使用长文件名格式bootok.exe > boot acceptance application for registry bootvrfy.exe >通报启动成功cacls.exe >显示和编辑acl calc.exe >计算器cdplayer.exe > cd播放器change.exe >与终端服务器相关的查询charmap.exe >字符映射表chglogon.exe >启动或停用会话记录chgport.exe >改变端口(终端服务)chgusr.exe >改变用户(终端服务)chkdsk.exe >磁盘检测程序chkntfs.exe >磁盘检测程序cidaemon.exe >组成ci文档服务cipher.exe >在ntfs上显示或改变加密的文件或目录cisvc.exe >索引内容ckcnv.exe >变换cookie cleanmgr.exe >磁盘清理cliconfg.exe > sql客户网络工具clipbrd.exe >剪贴簿查看器clipsrv.exe >运行clipboard服务clspack.exe >建立系统文件列表清单cluster.exe >显示域的集群_cmd_.exe >没什么好说的!cmdl32.exe >自动下载连接管理cmmgr32.exe >连接管理器cmmon32.exe >连接管理器监视cmstp.exe >连接管理器配置文件安装程序comclust.exe >集群comp.exe >比较两个文件和文件集的内容*compact.exe >显示或改变ntfs分区上文件的压缩状态conime.exe > ime控制台control.exe >控制面板convert.exe >转换文件系统到ntfs convlog.exe >转换iis日志文件格式到ncsa格式cprofile.exe >转换显示模式cscript.exe >较本宿主版本csrss.exe >客户服务器runtime进程csvde.exe >日至格式转换程序dbgtrace.exe >和terminal server相关dcomcnfg.exe > dcom配置属性dcphelp.exe > ?dcpromo.exe > ad安装向导ddeshare.exe > dde共享ddmprxy.exe >debug.exe >就是debug啦!dfrgfat.exe > fat分区磁盘碎片整理程序dfrgntfs.exe > ntfs分区磁盘碎片整理程序dfs_cmd_.exe >配置一个dfs树dfsinit.exe >分布式文件系统初始化dfssvc.exe >分布式文件系统服务器diantz.exe >制作cab文件diskperf.exe >磁盘性能计数器dllhost.exe >所有com+应用软件的主进程dllhst3g.exe>dmadmin.exe >磁盘管理服务dmremote.exe >磁盘管理服务的一部分dns.exe > dns applications dns doskey.exe >命令行创建宏dosx.exe > dos扩展dplaysvr.exe >直接运行帮助drwatson.exe >华生医生错误检测drwtsn32.exe >华生医生显示和配置管理dtcsetup.exe > installs mdtc dvdplay.exe > dvd播放dxdiag.exe > direct-x诊断工具edlin.exe >命令行的文本编辑器(历史悠久啊!)edlin.exe >命令行的文本编辑器(历史悠久啊!)esentutl.exe > ms数据库工具eudcedit.exe > type造字程序eventvwr.exe >事件查看器evnt_cmd_.exe > event to trap translator; configuration tool evntwin.exe > event to trap translator setup exe2bin.exe >转换exe文件到二进制expand.exe >解压缩extrac32.exe >解cab工具fastopen.exe >快速访问在内存中的硬盘文件faxcover.exe >传真封面编辑faxqueue.exe >显示传真队列faxsend.exe >发送传真向导faxsvc.exe >启动传真服务fc.exe >比较两个文件的不同find.exe >查找文件中的文本行findstr.exe >查找文件中的行finger.exe >一个用户并显示出统计结果fixmapi.exe >修复mapi文件flattemp.exe >允许或者禁用临时文件目录fontview.exe >显示字体文件中的字体forcedos.exe > forces a file to start in dos mode.强制文件在dos模式下运行freecell.exe > popular windows game空当接龙ftp.exe> filetransfer protocol used to transfer files over anetwork conne ction就是ftp了gdi.exe > graphic device interface图形界面驱动grovel.exe >grpconv.exe > program manager group convertor转换程序管理员组help.exe > displays help for windows 2000 commands显示帮助hostname.exe > display hostname for machine.显示机器的hostname ie4uinit.exe > ie5 user install tool ie5用户安装工具ieshwiz.exe > customize folder wizard自定义文件夹向导iexpress.exe > create and setup packages for install穿件安装包iisreset.exe > restart iis admin service重启iis服务internat.exe > keyboard language indicator applet键盘语言指示器ipconfig.exe > windows 2000 ip configuration.察看ip配置ipsecmon.exe > ip security monitor ip安全监视器ipxroute.exe > ipx routing and source routing control programipx路由和源路由控制程序irftp.exe > setup ftp for wireless communication无线连接ismserv.exe > intersite messaging service安装或者删除servicecontrol manage r中的服务jdbgmgr.exe > microsoft debugger for java 4 java4的调试器jetconv.exe > convert a jet engine database转换jet engine数据库jetpack.exe > compact jet database.压缩jet数据库jview.exe > command-line loader for java java的命令行装载者krnl386.exe > core component for windows 2000 2000的核心组件label.exe > change label for drives改变驱动器的卷标lcwiz.exe > license compliance wizard for local or remotesystems.许可证符合向导ldifde.exe > ldif cmd line manager ldif 目录交换命令行管理licmgr.exe > terminal server license manager终端服务许可协议管理lights.exe > display connection status lights显示连接状况llsmgr.exe > windows 2000 license manager 2000许可协议管理llssrv.exe > start the license server 启动许可协议服务器lnkstub.exe >locator.exe > rpc locator远程定位lodctr.exe > load perfmon counters调用性能计数logoff.exe > log current user off.注销用户lpq.exe > displays status of a remote lpd queue显示远端的lpd打印队列的状态,显示被送到基于unix的服务器的打印任务lpr.exe > send a print job to a network printer.重定向打印任务到网络中的打印机。
CMD命令及用法(超全)
CMD命令及用法(超全).txt同志们:别炒股,风险太大了,还是做豆腐最安全!做硬了是豆腐干,做稀了是豆腐脑,做薄了是豆腐皮,做没了是豆浆,放臭了是臭豆腐!稳赚不亏呀!MD命令及用法(超全)以下内容跟帖回复后才能看到==============================命令提示符(CMD)是在OS 2 , Windows CE与Windows NT平台为基础的操作系统(包括Windows 2000和XP中, Vista中,和Server 2003 )下的“MS-DOS 方式”,虽然随着计算机产业的发展,Windows 操作系统的应用越来越广泛,DOS 面临着被淘汰的命运,但是因为它运行安全、稳定,有的用户还在使用,所以一般Windows 的各种版本都与其兼容,用户可以在Windows 系统下运行DOS,中文版Windows XP 中的命令提示符进一步提高了与DOS 下操作命令的兼容性,用户可以在命令提示符直接输入中文调用文件。
DOS命令提示符DOS基础应用.有兴趣的可以来看看了cd 改变当前目录 sys 制作DOS系统盘copy 拷贝文件 del 删除文件deltree 删除目录树 dir 列文件名diskcopy 制磁盘 edit 文本编辑format 格式化磁盘 md 建立子目录mem 查看内存状况 type 显示文件内容rd 删除目录 ren 改变文件名cls 清屏〔适用场合〕屏幕上太乱了,或是屏幕上出现乱码了,清除屏幕上显示内容但不影响电脑内部任何信息〔用法〕 cls 回车move 移动文件,改目录名〔适用场合〕移动文件到别的目录〔用法〕 move [文件名] [目录] 移动文件至新目录下move [目录名] [目录名] 改目录名〔例子〕 cmove cautoexec.bat cold移动autoexec.bat文件至old目录下cmove cconfig.sys cold移动config.sys文件至old目录下more 分屏显示〔适用场合〕当输出很多一屏显示不下时采用,几乎适合所有命令,尤其是type等命令时很有用。
Windows批处理文件(.bat文件和.cmd文件)介绍以及简单使用
Windows批处理⽂件(.bat⽂件和.cmd⽂件)介绍以及简单使⽤⾸先说⼀下cmd⽂件和bat⽂件的区别,从⽂件描述中的区别是,cmd⽂件叫做:Windows命令脚本,bat⽂件叫:批处理⽂件,两者都可以使⽤任意⼀款⽂本编辑器进⾏创建、编辑和修改,只是在cmd中⽀持的命令要多于bat。
批处理⽂件是⼀种没有什么固定格式的⽂件,他可以处理⼀条或者多条命令,⽂件的扩展名是:.cmd或者.bat,⽂本⾥⾯的每⼀⾏就是⼀条处理指令,双击运⾏它的时候,Windows就会调⽤cmd.exe去运⾏它。
接着我们来认识第⼀条指令:echo和@@echo off通常我们将这条指令写在我们批处理⽂件的第⼀⾏,因为有了这条指令之后,当我们在运⾏.bat的时候,就不会将⽂件⾥⾯的内容打印出来了,如果没有这句话,会先去将⽂件⾥⾯的内容打印在屏幕上,通常我们是不希望使⽤者了解⾥⾯的代码结构的.第⼆条指令:set1. set a=12. set string1=abcdefg使⽤set命令,我们可以设置变量,其中“a”和“string1”就是我们设置的变量,可以直接给设置的变量赋值。
当我们希望将设置的变量显⽰在屏幕的时候,需要在变量的前后带上“%”,然后使⽤echo命令将设置的变量进⾏回显。
如下:1. echo %a%2. echo %string1%当我们需要输出空⾏的时候,使⽤:“echo.”,其中“.”必须紧跟在echo命令的后⾯,⽽且“.”也可以被,:;”/等任⼀的符号代替,这样我们就会输出⼀个空⾏,相当于敲了⼀个回车。
第三条指令:REM 和 ::这两条指令的作⽤是帮助我们进⾏指令的注释,类似于C++中的:“/**/”和“//”1. REM set a=12. ::set string1=abcdefg第四条指令:PAUSEpause在指令中的作⽤是暂停,当我们需要在⽂件运⾏的中间让其暂停⼀下,看⼀下我们的输出,就会使⽤PAUSE命令,然后在控制台就会显⽰:“请按任意键以继续”,当我们按下任意键之后,⽂件就会继续运⾏了,当我们希望在屏幕上显⽰⾃⼰的语句的时候,可以这样写:echo 其他提⽰语 & pause > nul这样在屏幕显⽰的就是我们⾃⼰设置的提⽰语了。
关于CMD
-e CodeStart MEMORY { page 0: PRAM: org="0100h" len="0F00h"
} SECTIONS{ .text:>PRAM page 0
}
由于每个程序都需要一个链接配置文件, 可以编写一个满足通常需要的链接配置文件。 一个 比较通用的链接配置文件:
-e CodeStart -m map.map MEMORY { PAGE 0: VECT: org=0080h len="0080h" PARAM: org="100h" len="0F00h" PAGE 1: DARAM: org="1000h" len="1000h" } SECTIONS {
ቤተ መጻሕፍቲ ባይዱ
SECTION 指令: 1、SECTIONS 指令任务: (1)说明如何将输入段组合成输出段; (2)在可执行程序中定义输出段; (3)指定输出段在存储器中的存放位置; (4)允许重新命名输出段。 2、SECTIONS 指令的一般语法如下: SECTIONS
{ name:[property,property,property,……] name:[property,property,property,……] name:[property,property,property,……] …… } 在链接器命令文件中, SECTIONS 命令用大写字母, 紧随其后并用大括号括起来的是关于输 出段的说明语句。 每一个输出段的说明都从段名开始, 段名后是一行说明段的内容和如何给 段分配存储单元的属性参数。一个段的属性参数包括: (1) Load allocation,由它定义将输出段加载到存储器中的什么位置。语法为: Load=allocation(这里的 allocation 指的是地址) 或者> allocation 其中 allocation 是关于输出段地址的说明,即给输出段分配存储单元。具体写法有多种,例 如: .text:load=0x1000 ;将输出段.text 定位到一个特定的地址 .text:load>ROM ;将输出段.text 定位到命名为 ROM 的存储区 .text: PAGE 0 ;将输出段定位到 PAGE 0 (2) Run allocation,由它定义输出段在存储器的什么开始运行。其语法为: run=allocation 或者 run>allocation 链接器为每个输出段在目标存储器中分配两个地址: 一个是加载的地址, 另一个是执行程序 的地址。通常,这两个地址是相同的,可以认为每个输出段只有一个地址。有事要想吧程序 的加载区和运行区分开,只要用 SECTIONS 命令让链接器对这个段定位两次就行了。一次 是设置加载地址,另一次是设置运行地址。例如: .fir:load=ROM,run=RAM
DSP28335—CMD文件解读(映射关系)
DSP28335—CMD解读(1)在DSP28335工程文件里(不用BIOS产生CMD文件),手写CMD文件一般有两个,在RAM里调试时用的两个CMD文件分别为DSP2833x_Headers_nonBIOS.cmd和28335_RAM_lnk.cmd,烧写到flash里时用的两个CMD文件分别为DSP2833x_Headers_nonBIOS.cmd和F28335.cmd,其中DSP2833x_Headers_nonBIOS.cmd文件可以在所有工程文件中通用,主要作用是把外设寄存器产生的数据段映射到对应的存储空间,可以跟DSP2833x_GlobalVariableDefs.c文件对照一下看看。
下面通过一个简单例子,比如向CpuTimer0Regs. TIM.all写数据,来解读一下CMD文件是如何把寄存器里的值准确映射到所在存储器的位置的。
先在DSP2833x_GlobalVariableDefs.c文件里找到以下几行代码:#ifdef __cplusplus#pragma DATA_SECTION("CpuTimer0RegsFile")#else#pragma DATA_SECTION(CpuTimer0Regs,"CpuTimer0RegsFile");#endifvolatile struct CPUTIMER_REGS CpuTimer0Regs;由上可知CpuTimer0Regs是一个结构体变量名(其定义在DSP2833x_CpuTimers.c文件里),通过预处理命令#pragma 为这个结构体定义了一个名称为CpuTimer0RegsFile的数据段。
接着在DSP2833x_Headers_nonBIOS.cmd文件里找到如下代码:SECTIONS{PieVectTableFile : > PIE_VECT, PAGE = 1DevEmuRegsFile : > DEV_EMU, PAGE = 1FlashRegsFile : > FLASH_REGS, PAGE = 1CsmRegsFile : > CSM, PAGE = 1AdcMirrorFile : > ADC_MIRROR, PAGE = 1XintfRegsFile : > XINTF, PAGE = 1CpuTimer0RegsFile : > CPU_TIMER0, PAGE = 1......}红字体代码的作用就是,通过SECTIONS伪指令把CpuTimer0RegsFile数据段装载到名称为CPU_TIMER0的存储空间。
cmd解释说明
C:\Documents and Settings\Administrator>cmd /?启动Windows XP 命令解释程序一个新的实例CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF] [[/S] [/C | /K] string]/C 执行字符串指定的命令然后终断/K 执行字符串指定的命令但保留/S 在/C 或/K 后修改字符串处理(见下)/Q 关闭回应/D 从注册表中停用执行AutoRun 命令(见下)/A 使向内部管道或文件命令的输出成为ANSI/U 使向内部管道或文件命令的输出成为Unicode/T:fg 设置前景/背景颜色(详细信息,请见COLOR /?)/E:ON 启用命令扩展(见下)/E:OFF 停用命令扩展(见下)/F:ON 启用文件和目录名称完成字符(见下)/F:OFF 停用文件和目录名称完成字符(见下)/V:ON 将! 作为定界符启动延缓环境变量扩展。
如: /V:ON 会允许!var! 在执行时允许!var! 扩展变量var。
var 语法在输入时扩展变量,这与在一个FOR 循环内不同。
/V:OFF 停用延缓的环境扩展。
请注意,如果字符串有引号,可以接受用命令分隔符'&&' 隔开的多个命令。
并且,由于兼容原因,/X 与/E:ON 相同,/Y 与/E:OFF 相同,并且/R 与/C 相同。
忽略任何其他命令行开关。
如果指定了/C 或/K,命令行开关后的命令行其余部分将作为命令行处理;在这种情况下,会使用下列逻辑处理引号字符("):1. 如果符合下列所有条件,那么在命令行上的引号字符将被保留:- 不带/S 命令行开关- 整整两个引号字符- 在两个引号字符之间没有特殊字符,特殊字符为下列中的一个: <>()@^|- 在两个引号字符之间有至少一个空白字符- 在两个引号字符之间有至少一个可执行文件的名称。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本人dsp菜鸟,在dsp门边徘徊已久,就是入不了门。
都说要要先学会编写CMD文件,也没找见什么详细资料。
今天终于在C6000汇编用户工具指南中寻到蛛丝马迹。
迫不及待的发上来。
英语水平有限。
翻译的不好,凑合看吧。
有错的别拍砖。
另强烈恳求前辈高人给菜鸟们指个明路吧MEMORY伪指令连接器决定输出段(output section)分配到存储器里的位置,必须有一个目标的存储器模型来完成这个任务。
MEMORY伪指令允许你建立目标存储器的模型,你可以定义系统包含的存储器类型和存储器的地址空间。
连接器保持输出段分配模型并根据它决定可被目标代码使用的存储器位置。
C6000的存储器的配置随具体应用不同而不同。
MEMORY 伪指令可以实现不同的配置。
用MEMORY伪指令定义存储器模型后,可以用SECTIONS 伪指令分配输出段(out section)到一定义的存储器中。
默认的存储器模型如果不使用MEMORY伪指令,连接器将使用基于C6000体系结构的默认存储器模型。
默认模型假设系统提供所有的32bit地址空间并且可用。
查看7-46业MEMORY伪指令语法MEMORY伪指令确定目标系统实际提供的可以被程序使用的存储器空间。
每个空间都有如下特性:名称起始地址长度可选的属性设置(Optional set of attributes)Optional fill specification在使用MEMORY伪指令时,必须保证所有的存储范围可以载入代码(loading code)。
被MEMORY伪指令定义存储器都是一配置的;任何没有用MEMORY详细描述的存储器都是未初始化的。
MEMORY伪指令表达式中没有定义的地址空间代表不存在的存储器空间。
MEMORY伪指令在command file中用MEMORY( 大写)表示,后面的大括号中列出了存储器空间。
下面的例子定义了一个拥有4KB的快速外部存储器在地址0x0000 0000处,一个2KB的慢速外部存储器在地址0x0000 1000处,还有一个4KB的慢速存储器在地址0x1000 0000处。
/* Sample command file with MEMORY directive */File.obj file2,obj //input files-o prog.out //optionsMEMORY{FAST_MEM (RX) : origin = 0x00000000 length = 0x00001000SLOW_MEM (RW) : origin = ox00001000 length = 0x00000800EXT_MEM (RW) : origin = 0x10000000 length = 0x00001000}注:名字起始地址长度MEMORY通用语法MEMORY{Name 1 [(attr)] : origin = constant, length = constan[,fill = constant]Name 2……}名字命名一个存储器空间。
1到8个字符;可以包括“A-Z”“a-z”“$”“.”和“ _”。
名字对连接器来说没有特别的意义;他们只确定存储器空间。
存储器空间的名字是连接器内部的(internal the linker),不在输出文件和符号表(symbol table)中保留。
所有的存储器空间必须有唯一的名字而且不能重叠/重复(overlap)Attr1到4个与名字相关的属性。
属性是可选项;使用的时候必须用括号括起来。
属性限定输出段在存储器空间中的分配。
如果不使用任何属性,输出段可以只有分配到任何空间(any range)。
任何没有提供属性的存储器(包括默认模型中的存储器)拥有四个属性。
有效的属性如下:R 存储器可读W 可写X 可以包含可执行代码I 存储器可被初始化Origin表示存储器空间的起始地址;enter as orgin,org,或o。
值用字节表示,32bit常数,可以是十进制,八进制,或者十六进制。
Length表示存储器空间的长度(大小);enter as length, len, or l. 值用字节表示,32bit常数,可以是十进制,八进制,或者十六进制。
Fillspecifies a fill character for the memory range; enter as fill or f. Fillsare optional. The value is a 32-bit integer constant and can be decimal,octal, or hexadecimal.这个值用于填充存储器空间中没有分配给段的区域。
(The fill value is used to fill areas of the memory range that are not allocated to a section)注意:填充存储器空间(fill memory ranges)如果给大的存储器空间填充值(fill value),输出文件将会非常大,因为填充存储器空间(即使用0)将产生raw data 给存储器空间中没有分配的块。
because fillinga memory range (even with 0s) causes raw data to be generated for all unallocated blocks of memory in the range下面的例子定义了一个带有R和W属性填充常数为0FFFFFFFh的存储器空间:MEMORY{RFILE (RW):o = 0x0020h,l = 0x1000,f = 0xFFFFFFFFh }MRMORY伪指令通常与SECTIONS伪指令结合使用来控制输出段的分配。
用MEMORY定义目标系统的存储器模型后,可以用SECTIONS把输出段分配到具体命名的存储器空间或有具体属性的存储器中。
例如,可以将.text和.data段分配到名称为FAST_MEM区域内并将.bss段分配到名称为SLOW_MEM的区域内。
SECTIONS伪指令1.描述输入段怎样和输出段结合2.在可执行程序中定义输出段3.说明输出段放在存储器中的位置(段与段之间的关系和段与整个存储器空间的关系)4.允许重命名输出段如果不使用SECTIONS伪指令,连接器将使用默认的算法结合并分配段。
参看7-46业SECTIONS语法SECTIONS伪指令在CMD文件中用大写SECTIONS表示,后面的大括号中表示输出段的列表SECTIONS通用语法SECTIONS{Name : [property[,property] [,property] …]Name …}每个段的定义以name开始,定义一个输出段(一个输出段就是输出文件中的一个段。
)一个输出段可以是一个子段的specification。
名称后面是一系列属性说明了段的内容和段怎样被分配。
属性可以被逗号分开。
段的属性可能有:1.Load allocation 定义段载入存储器的位置语法:Load = allocation orallocation or> allocation语法中的allocation部分说明了段怎样放置在目标存储器中。
参看7-30业2.Run allocation 定义where in memory the section is to be run语法:run = allocation orrun .> allocation3.input section defines the input sections (object files) that constitute the output section语法:{input_sections}4.section type 为特别的段类型定义表示符(define flags for special section types)语法:type = COPY ortype = DSECT ortype = NOLOAD参看7-45业5.fill value 定义填充未初始化部分的值the value used to fill uninitialized holes语法:fill = value orname :[properties] = value参看7-52业下例是一个CMD中的SECTIONS部分// sample command file with SECTIONS directivefile1.obj file2.obj // input file-o prog.out //optionsSECTIONS{.text : load = EXT _MEM, run = 0x0000800.const : load = FAST_MEM.bss : load = SLOW_MEM.vectors : load = 0x00000000{t1.obj (.intvec1)t2.obj (.intvec2)endvec = . ;}.data : alpha : align = 16.data : beta : align = 16}下图展示了上例中SECTIONS伪指令中定义的6个输出段,并说明了他们在存储器器是怎样分配的。
图是TMS320C6000 Assembly Language Tools User’s Guide的7-2。