一、源码是什么:
源码就是指编写的最原始程序的代码。运行的软件是要经过编写的,程序员编写程序的过程中需要他们的\"语言\"。音乐家用五线谱和音符,建筑师用图纸和笔,那程序员的工作的语言就是\"源码\"了。
人们平时使用软件时就是程序把\"源码\"翻译成我们可直观的形式表现出来供我们使用的。任何一个网站页面,换成源码就是一堆按一定格式书写的文字和符号,但我们的浏览器帮我们翻译成眼前的模样了。
二、源码怎么使用:
可以用记事本打开的好多行英文的,用编程语言写好的软件源程序经过编译成目标程序,才能运行。一般目标程序不能再修改了。电脑上安装的软件都是目标程序。源程序不可能直接运行的。提倡软件开源的人士认为应该提供源程序给用户,让用户自己修改,有利于软件行业的发展。
知识扩展:
源代码主要有以下2种作用:
1、生成目标代码,即计算机可以识别的代码。
2、对软件进行说明,即对软件的编写进行说明。为数不少的初学者,甚至少数有经验的程序员都忽视软件说明的编写,因为这部分虽然不会在生成的程序中直接显示,也不参与编译。但是说明对软件的学习、分享、维护和软件复用都有巨大的好处。
在设置中打开允许访问页面,就可以看到了combisxt。
combisxt一种翻译程序,它用于将源语言程序翻译为目标语言程序。后者在windows *** 作系统平台下,其文件的扩展名通常为obj。该文件通常还要经过进一步的连接,生成可执行文件。
通常有两种方式进行这种翻译,一种是编译,另一种是解释。后者并不生成可执行文件,只是翻译一条语句、执行一条语句。这两种方式相编译比解释运行的速度要快得多。
编译过程的5个阶段,词法分析,语法分析,语义分析与中间代码产生,优化,目标代码生成。
在这五个阶段中,词法分析的任务是识别源程序中的单词是否有误,编译程序中实现这种功能的部分一般称为词法分析器。
在编译器中,词法分析器通常仅作为语法分析程序的一个子程序以便在它需要单词符号时调用。在这一编译阶段中发现的源程序错误,称为词法错误。
语法分析阶段的目的是识别出源程序的语法结构是否错误,所以有时又常为句子分析。编译程序中负责这一功能的程序称为语法分析器或语法分析程序。在这一阶段中发现的错误称为语法错误。
C语言的(源)程序必须经过编译才能生成目标代码,再经过链接才能运行。PASCAL语言,FORTRAN语言的源程序也要经过这样的过程。通常将C,PASCAL,FORTRAN这样的语言统称为高级语言。而将最终的可执行程序称为机器语言程序。
在编译C语言程序的过程中,发现源程序中的一个标识符过长,超过了编译程序允许的范围,这个错误应在词法分析阶段发现,这种错误通常被称作词法错误。
1编程是编写程序的中文简称,就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到相应结果的过程。
2为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路、方法、和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算机之间交流的过程就是编程。
3编程:设计具备逻辑流动作用的一种“可控体系”注:编程不一定是针对计算机程序而言的,针对具备逻辑计算力的体系,都可以算编程
例子:①比如编写一段代码程序②编写一个控制设备体系。
4汇编语言
为了解决使用机器语言编写应用程序所带来的一系列问题,
文件系统驱动编程流程
人们首先想到使用助记符号来代替不容易记忆的机器指令。这种助记符号来表示计算机指令的语言称为符号语言,也称汇编语言。在汇编语言中,每一条用符号来表示的汇编指令与计算机机器指令一一对应;记忆难度大大减少了,不仅易于检查和修改程序错误,而且指令、数据的存放位置可以由计算机自动分配。用汇编语言编写的程序称为源程序,计算机不能直接识别和处理源程序,必须通过某种方法将它翻译成为计算机能够理解并执行的机器语言,执行这个翻译工作的程序称为汇编程序
1理论上的概念
源代码是相对目标代码和可执行代码而言的,也叫源文件。
源代码就是用汇编语言和高级语言写出来的地代码。
目标代码是指源代码经过编译程序产生的能被cpu直接识别二进制代码。
可执行代码就是将目标代码连接后形成的可执行文件,当然也是二进制的。
2最直观的概念
在这个网页上右键鼠标,选择查看源文件出来一个记事本,里面的内容就是此网页的源代码
===================================================
关于两者的区别联系:
1从字面意义上来讲,源文件是指一个文件,指源代码的集合源代码则是一组具有特定意义的可以实现特定功能的字符(程序开发代码)
2"源代码"在大多数时候等于"源文件"
枫舞在上面说过"2最直观的概念 在这个网页上右键鼠标,选择查看源文件出来一个记事本,里面的内容就是此网页的源代码"这句话就体现了他们的关系,此处的源文件是指网页的源文件,而源代码就是源文件的内容,所以又可以称做网页的源代码
获取server安装的各种组件的powershell命令,可以在server上正常命令行执行
powershell -command "& {get-windowsfeature | Out-File -FilePath C:\Commandtxt}"
但我用C语言写出来的exe去跑的时候总是不能正常执行,因为server环境里面没有debug环境,所以也不知道具体错在什么地方了,具体source如下:
C/C++ code
TCHAR szCommandLine[1024] = {0};
sprintf(szCommandLine,
"powershell -command \"& {get-windowsfeature | Out-File -FilePath C:\\Commandtxt}\"");
bSuccess = CreateProcess( NULL, // No module name (use command line)
szCommandLine, // Command line
NULL, // Process handle not inheritable
NULL, // Thread handle not inheritable
FALSE, // Set handle inheritance to FALSE
0, // No creation flags
NULL, // Use parent's environment block
NULL, // Use parent's starting directory
&si, // Pointer to STARTUPINFO structure
&pi ); // Pointer to PROCESS_INFORMATION structure
任务1:识别小型语言所有单词的词法分析程序设计
源程序设计语言 G[<程序>]
<程序>→<变量说明><BEGIN> <语句表> <END>
<变量说明>→VAR<变量表>:<类型>;|<空>
<变量表>→<变量表>,<变量>|<变量>
<类型>→INTEGER
<语句表>→<语句> | <语句>;<语句表>
<语句>→<赋值语句>|<条件语句>|<WHILE语句>|<复合语句>
<赋值语句>→<变量>:=<算术表达式>
<条件语句>→IF<关系表达式>THEN<语句>ELSE<语句>
<WHILE语句>→WHILE<关系表达式>DO<语句>
<复合语句>→BEGIN<语句表>END
<算术表达式>→<项>|<算术表达式>+<项>|<算术表达式>-<项>
<项>→<因式>|<项><因式>|<项>/<因式>
<因式>→<变量>|<整数>|(<算术表达式>)
<关系表达式>→<算术表达式><关系符><算术表达式>
<变量>→<标识符>
<标识符>→<标识符><字母>|<标识符><数字>|<字母>
<整数>→0|<非零数字><泛整数>
<泛整数>→<数字>|<数字><泛整数>|ε
<关系符>→<|<=|==|>|>=|<>
<字母>
→A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z
<非零数字>→1|2|3|4|5|6|7|8|9
<数字>→<非零数字>|0
<空>→
要求和提示:
词法分析阶段,可以打开任意位置和名称的源文件进行词法分析,可以进行非法字符和数字后边跟字母的错误判断,如果没有错误则提示“词法分析正确完成!”,并且可以选择输出tokentxt(token文件)stringtxt(符号表)两个文件;
1.词法分析程序的主要任务如下:
① 组织源程序的输入,识别出源程序中的各个基本语法单位(也称为单词或语法符号),按规则转换成二元式的形式;
② 删除无用的空白字符、回车符、及其它非实质性符号;
③ 删除注解行;
④ 为后面的语法和语义分析提供二元式链表;
单词 编码 单词 编码
标识符 1 < 15
正整数 2 <= 16
BEGIN 3 > 17
END 4 >= 18
IF 5 <> 19
THEN 6 == 20
ELSE 7 ; 21
WHILE 8 . 22
DO 9 := 23
INTEGER 10 , 24
+ 11 ( 25
- 12 ) 26
13
/ 14
1) 对标识符的长度控制在8个字符(包括8个)以内,超过的做截断处理;
2) 数字不大于65535,否则报错;
3) 能跳过源程序中的空白格:两个单词之间的任何空格,制表符,回车,换行都是白空格,除了用来分隔单词以外,没有意义;
4) 能跳过注释:
a) 接连出现的/到下一次接连出现的/之间的任何文字都是注释(多行);
b) 从某行接连出现的//到该行的结尾的任何文字都是注释(单行)。
3怎样编写词法分析程序:
1) 预处理:把源文件一个字符一个字符的读入词法分析程序设置的输入字符结构体数组中(输入缓冲区),读入过程要删除注释,删除多余的白空格;
2) 从源程序字符数组中获得单词, 编码为二元式:
二元式采用结构体数组存储, 把单词类型和词元记录下来。
分解单词的方法:
1) Case多路转换语句根据单词的特点直接编写;
2) 通过描述单词的正规文法得到相应的有穷自动机,通过case多路转换语句完成有穷自动机的处理流程。
3.编写词法分析程序要注意的问题:
1) 检查词法是否有错误
检查是否有非法字符:如 @, &, !
检查标志符和数字是否满足限制条件
检查注释符号是否配对
2) 符分隔单词
能够区分两个单词的符号为界符
有些界符不是单词:如白空格
有些界符仅仅用来分隔:如;
有些界符本身还是源程序不可缺少的单词,如(, ), +, /, 等等
有些界符包含两个字符:如<>, >=等等
3) 输出词法错误
如果有错误,需要报告词法错误的原因。并且要能够越过错误,分解下一个单词,直到源程序结束。
4) 输出的二元式流保存在二元式结构体数组中。
将用高级语言写成的程序变成机器可识别的二进制代码的过程称为编译过程
因为在计算机中,各种信息和数据都是以文件形式存放的在编辑方式下建立起来的程序文件称为源程序文件,简称源文件(如nonamec),相应的程序叫做源程序源程序是用高级语言编写的,它不能直接在机器上运行因为计算机并不能识别源程序,它仅认识规定范围内的一系列二进制代码所组成的指令数据,并按预定的含义执行一系列动作通常把这些计算机能识别的二进制代码称为目标代码为了把源程序变成目标代码,就需要有个"翻译"做这种转换工作具体实现这一转换功能的软件就是编译程序,如C语言编译程序
经编译后生成的目标程序的文件叫做目标文件(如nonameo)
连接:因为程序中会用到库函数或其他函数,所以目标程序还不能马上在机器上运行,需要把它们连成一个统一的整体,这就是连接经过连接就把分离的目标程序连成完整的可执行程序,对应的文件是可执行文件
运行:运行可执行文件,可得到相应的结果如果发现运行结果不正确,那么就要分析出错原因,然后重新进入编辑方式,修改源程序经编辑之后,再重复上述的编译,连接,运行等步骤
我们用QASM写的是源程序,编写好的程序编译后形成的obj是目标文件。obj通过连接程序后形成exe可执行程序。(WIN系统中程序编译过程) 深入讲解见参考资料
以上就是关于源码是什么怎么使用全部的内容,包括:源码是什么怎么使用、在idle的shell环境中src下面的combisxt没有怎么办、编程原理是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)