为什么汇编语言(如Windows,Linux)有所不同?
发布时间:2020-12-13 20:12:45 所属栏目:Windows 来源:网络整理
导读:我对所有这些低级别的东西,汇编语言都比较新,想要了解更多的细节.为什么 Linux与Windows汇编语言有区别? 据了解,当我编译C代码时,操作系统并不能真正产生纯机器或汇编代码,它会产生与操作系统相关的二进制代码.但是为什么? 例如,当我使用x86系统时,CPU只能
我对所有这些低级别的东西,汇编语言都比较新,想要了解更多的细节.为什么
Linux与Windows汇编语言有区别?
据了解,当我编译C代码时,操作系统并不能真正产生纯机器或汇编代码,它会产生与操作系统相关的二进制代码.但是为什么? 例如,当我使用x86系统时,CPU只能理解x86 ASM我是对的?为什么我们不写纯x86汇编代码,为什么基于操作系统有不同的组合变体?如果我们写纯ASM或OS产生纯ASM,操作系统之间不会有二进制兼容性问题? 我真的很想知道背后的所有原因.任何详细的答案,文章,书都会很棒.谢谢.
没有区别.如果处理器相同,则汇编代码相同.在Windows上编译的x86代码与Linux上的x86代码是二进制兼容的.编译器不会产生与OS相关的二进制代码,但是它可能会以不同的格式打包代码(例如,PE与ELF).
区别在于使用哪些库.为了使用操作系统的东西(例如I / O),您必须链接到操作系统的库.毫不奇怪,Windows系统库在Linux机器上不可用(除非您有Wine),反之亦然. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- R Peer证书无法使用给定的CA证书Windows进行身份验证
- windows – 如何查找本地用户帐户的创建日期?
- windows-phone-7.1 – Windows Phone – PhotoChooserTask没
- 替换一个dll时出现.net DLL版本问题
- windows-server-2008 – 为什么Windows 2008在内存已满之前
- NonSerialized 字段如果在dll 中读到数据写入MonoClassFiel
- signalr – Microsoft.Owin类似OwinMiddleware和IOwinConte
- 在Windows Azure角色中OnStop()方法和Stopping事件之间有什
- windows防火墙实验-命令行设置远程桌面连接以及禁止浏览器上
- windows-server-2008 – 在Windows Server 2008 R2上更新ND