可执行代码和命令执行

代码执行

代码执行(Executable Code) 是指将目标代码连接后形成的代码,简单来说是机器能够直接执行的代码,可执行代码当然也是二进制的。源代码(也称源程序)是指未编译的按照一定的程序设计语言规范书写的文本文件,是一系列人类可读的计算机语言指令。
在计算机程序设计中,一般建议将源代码与可执行代码分离存储。问题在于不同平台下编译出来的可执行代码是不同的,例如一个程序复制到不同的电脑上,即便代码不做任何修改,VI也会被修改,因为VI中包含的可执行代码变了。理论上,可执行代码与源代码分离开来,可以提高程序的加载速度:程序可以各取所需,只加载源代码或只加载可执行代码。
windows操作系统中的二进制可执行文件分两种:一种后辍名为.COM,另一种是.EXE 。在MS-DOS下,有重名的.EXE文件和.COM文件运行时,优先执行.COM文件。如果只有A.EXE,就可以直接输入"A",而不用输入全名。但如果有A.COM和A.EXE,输入A则优先执行A.COM,要运行A.EXE只能输入A.EXE而不能输入A。在WINDOWS系统中的执行文件一般都是.EXE文件。在windows中,用户在命令提示符输入不带 .exe 扩展名的文件名后按 Enter 键或者点双击就能运行可执行程序。linux不像MS-DOS/windows一样靠文件后缀名来判断是否可执行,而是靠文件属性来判断。每个文件专门有个属性来表示文件是否可执行,对于脚本之类的程序,文件第一行指明执行本脚本的程序位置。
EXE文件头的信息
├偏移量┤  意义   ┤
├00h-01h ┤MZ’EXE文件标记   ┤
├02h-03h ┤最后一页的字节数(每页512B)  ┤
├04h-05h ┤文件长度(字节数)除以512的商+1 -|   ┤
├06h-07h ┤重定位项的个数    ┤
├08h-09h ┤文件头除16的商   ┤
├0ah-0bh ┤程序运行所需最小段数 ┤
├0ch-0dh ┤…大… ┤
├oeh-0fh ┤堆栈段的段值 (SS)  ┤
├10h-11h ┤…sp    ┤
├12h-13h ┤文件校验和   ┤
├14h-15h ┤IP   ┤
├16h-17h ┤CS   ┤
├18h-19h ┤…    ┤
├1ah-1bh ┤…   ┤
├1ch  ┤…     ┤
―――――――――――――――――――――――――
.EXE文件包含一个文件头和一个可重定位程序映象。文件头包含MS-DOS用于加载程序的信息,例如程序的大小和寄存器的初始值。文件头还指向一个重定位表,该表包含指向程序映象中可重定位段地址的指针链表。文件头的形式与EXEHEADER结构对应:
EXEHEADER STRUC
exSignature dw 5A4Dh ;.EXE标志
exExraBytes dw ;最后(部分)页中的字节数
exPages dw ;文件中的全部和部分页数
exRelocItems dw ;重定位表中的指针数
exHeaderSize dw ;以字节为单位的文件头大小
exMinAlloc dw ;最小分配大小
exMaxAlloc dw ;最大分配大小
exInitSS dw ;初始SS值
exInitSP dw ;初始SP值
exChechSum dw ;补码校验值
exInitIP dw ;初始IP值
exInitCS dw ;初始CS值
exRelocTable dw ;重定位表的字节偏移量
exOverlay dw ;覆盖号

命令执行

运行命令即DOS命令,主要是面向DOS操作系统的。DOS命令指DOS操作系统的命令,因DOS实际上是磁盘操作系统,所以DOS命令是一种面向磁盘管理的操作命令。 与Windows操作系统最大的区别在于,它以命令行的形式,靠输入命令来进行人机对话,并通过命令的形式把指令传给计算机,以实现对计算机的操作。DOS命令主要包括内部命令、外部命令和批处理命令
(1)内部命令
其包含在命令解释程序 COMMAND. COM中,一旦启动DOS,这些命令就被调入内存,只要在DOS系统提示符下输入这些命令,就可立即执行。
(2)外部命令
其以文件的形式存储在系统盘上,所带扩展名为COM和EXE。DOS启动时,它们并没有被调入内存,执行前必须从系统盘读进内存。因此输入外部命令时,要了解该命令是否在当前盘上,不然DOS无法找到它们。
(3)批处理命令
实际上是个文件,该文件包含多条命令,当用户键入批处理文件名时,DOS将顺序执行其中的各条命令。注意,批处理命令必须用“.BAT”作为扩展名
DOS实际上是DiskOperationSystem(磁盘操作系统)的简称,是一个基于磁盘管理的操作系统。与Windows等操作系统最大的区别在于,它是命令行形式的,靠输入命令来进行人机对话,并通过命令的形式把指令传给计算机,让计算机实现操作的。所以操作方式也非常简单,只需输入命令,然后回车,系统就会执行命令。从实质上来说,包括windows95和win9x的系列版本,这些看起来完全图形化的操作系统也完全是建立在dos之上的。
命令连接符
& 表示任务在后台执行,如要在后台运行redis-server,则有 redis-server &
&& 表示前一条命令执行成功时,才执行后一条命令 ,如 echo ‘1‘ && echo ‘2’
| 表示管道,上一条命令的输出,作为下一条命令参数,如 echo ‘yes’ | wc -l
|| 表示上一条命令执行失败后,才执行下一条命令,如 cat nofile || echo “fail”
;分号表示命令依次执行。
管道符’|’:
命令格式:命令A|命令B,即命令1的正确输出作为命令B的操作对象
ps aux | grep “test” 在 ps aux中的結果中查找test。
find . -name “*.txt” | xargs grep “good” -n --color=auto 把find的结果当成参数传入到grep中,即在那些文件内部查找good关键字。
注:本例中xargs将find产生的长串文件列表拆散成多个子串,
如“”find /path -type f -print0 | xargs -0 rm
xargs将find产生的长串文件列表拆散成多个子串,然后对每个子串调用rm xargs 可能就会误判了,如果需要处理特殊字符,需要使用-0参数进行处理。
选项解释-0 :当sdtin含有特殊字元时候,将其当成一般字符,想/'空格等

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值