百科问答小站 logo
百科问答小站 font logo



x86 win32下的汇编指令集可认为是 cpu提供的指令集 + win32提供的指令集 吗? 第1页

  

user avatar   bei-ji-85 网友的相关建议: 
      

理论上说,是可以跨平台的。


但是有一些问题:

1.汇编代码是需要入口的,你的代码怎么告诉操作系统入口在哪?EXE和ELF里有定义入口在那,你一段纯汇编代码怎么指定入口?内存这么大,操作系统怎么知道该把你的代码放到正确的位置执行?

2.你如何控制输入和输出?如何访问外设?在有操作系统的环境下IN/OUT指令,以及访问外设地址空间都是受限的,操作系统不允许你直接访问。这种情况下你一段汇编的意义在哪?除了消耗CPU时间,费点电发点热之外毫无意义。

3.你脱离操作系统直接执行?那你总要告诉CPU你的程序入口吧?有操作系统的时候,操作系统有加载器,没操作系统的时候,你怎么让CPU加载你的代码?你怎么把你的代码写到内存里?

操作系统的存在意义就是提供一套接口能方便的让代码执行,你的代码一旦脱离操作系统,很多功能都要自己实现,那跟你自己写一个操作系统有什么区别?




  

相关话题

  如何评价华为开发自主产权操作系统「鸿蒙」曝光? 
  为什么 iOS 来源于 FreeBSD 没有人讨论,但是鸿蒙使用部分来安卓代码,却被人一直在攻击? 
  x86指令集通过uops解码后通过RISC内核执行,是不是代表x86实际上已经属于半个RISC核? 
  哪种操作系统可以兼容另一个操作系统的应用,但又不"基于"它? 
  为什么每款 ARM 电脑都需要专门为它编译的内核,而 x86 的可以通用? 
  windows系统为什么不预留一点资源(cpu和内存占用),在执行繁重任务时以保证系统本身的流畅运行? 
  什么是虚拟寄存器,有何作用? 
  家用电脑装 Linux 系统能否在防止孩子玩游戏的同时满足他们 「查资料」的需求? 
  假如世界上只有Windows和Android,从来没有iOS和macOS,生活会不会变得更简洁一点? 
  如何评价华为发布的鸿蒙OS 2.0需要导入安卓部分SDK等功能? 

前一个讨论
为什么保护模式只能向更高特权级代码段转移控制?
下一个讨论
8086CPU的16位数据线如何传送大于16位的数据?





© 2025-05-22 - tinynew.org. All Rights Reserved.
© 2025-05-22 - tinynew.org. 保留所有权利