留言与评论(共有 0 条评论) |
发布时间:2020-04-12 08:46:06
感谢邀请。
首先要弄清楚问题,根据自己的理解我把问题重新翻译一下欢迎指正:
汇编程序代码与非汇编程序代码(比如c语言,C#,Java)有什么关系?
1.汇编语言是一种面向CPU的低级语言,它是与CPU指令集一一对应的助记符号,汇编语言写完后简单解释就可直接转化为机器可以识别的机器语言,中间不需要其他过程所以效率很高
2.普通的非汇编程序代码(比如C语言,C#,Java等)属于面向程序员的高级语言,它更接近人的思维,语法相对固定,只有通过特定编译规则的编译器进行编译才能转化成机器可以识别的机器语言,所以效率相对汇编语言来说较低。
分开来看1和2都是独立的计算机语言,都可以在各自擅长的领域进行软件开发,没有直接的关系。
但是高级语言在编译后生成二进制可执行程序过程中会转化成汇编语言,所以很多破解软件利用反汇编技术把源代码还原分析找出漏洞加以破解,同样我们也可以利用这个机制
来深度调试程序分析bug。
VisualStudio开发时 当程序运行到断点处停止依次点击调试->窗口->反汇编;英文显示为"Debug"下的"Windows"子菜单,选择"Disassembly" 来查看汇编代码。
Java开发时需要用HSDIS插件来查看汇编代码。
汇编语言与其他语言没有直接关系,换个角度考虑高级语言(C语言,Java语言等)编译时
会生成汇编代码进而转化成二进制可执行程序,存在这种关系。
欢迎留言讨论,也欢迎私信。
打个比喻,汇编程序与程序代码,就像象形文字与简体字类似,象形文字是只有古人看的懂,汇编只有cpu能识别。简体字是现代人看的懂,而程序代码是程序员或软件工程师写的。
大学时候的学习汇编语言课的痛苦给我留下了深刻的印象,真的不是一般的难学。但现在想想学号汇编语言是非常有用,他虽然是一种低级语言,具有运行速度快,效率高,代码精简的特点,不像其他大多数的程序设计语言一样被广泛用于程序设计,但因为他是直接向处理器发送指令的语言,再简单的指令你也要根据硬件的结构一点一点去写,所以学会了汇编语言,对于理解计算机的运行方式,培养程序设计思维是非常有用的。学过了汇编再学其他语言就感觉太简单。
现在我们常用的JAVA,C,C++,PHP等,和汇编语言同样是属于编程语言的,之所以叫编程语言,就是因为通过语言让你实现和计算机的交流,传递给计算机一段编译好的程序代码,让计算机能理解执行,所以程序代码简单来说就是用编程语言写出的一段可以被计算机执行的程序。
首先要明白有多种编程语言。
比如java、汇编等语言。
汇编程序,就是汇编语言编辑出来的一段拥有某种功能的程序。
程序代码,任何一种编程语言都可以编写出一段程序,程序的组成就是代码,这些代码可以叫程序代码。
只在win32平台编程用内联汇编移值性不用太关注,只要小心点有些语言是先用寄存器传参,要先保存寄存器,其他的都是一样写法,你移植性所说的可能是跨平台吧。
现在的汇编已经有伪码预编译指令等跟高级语言衔接的内容了,全靠编译器转换成cpu读的二进制机器码。
简单的说,汇编语言就是机器代码的注记符,机器代码就是汇编语言代表的二进制代码。
留言与评论(共有 0 条评论) |
全站搜索