热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

为什么MASM不能在MacOSX上运行?

如何解决《为什么MASM不能在MacOSX上运行?》经验,为你挑选了1个好方法。

我目前正在参加汇编语言和计算机体系结构课程.我们正在MASM中为x86处理器编程.我有一台Macbook Air,所以当然我必须在虚拟机上运行Windows才能在MASM中为我们的作业编程.

我感到困惑的是:我们正在学习和编写x86架构.当我抬起Macbook Air的处理器时,它似乎出现在x86系列中.考虑到这一点,为什么MASM不能与Mac OS X一起使用?

此外,如果汇编语言直接与硬件通信,为什么仅在Apple硬件上安装Windows操作系统(或通过VM运行它)突然允许我在MASM中编程?

谢谢,伊恩

[编辑澄清:我的理解 - 请告诉我,如果我错了 - 汇编语言是否"尽可能低".即它是预操作系统,并直接向硬件本身提供指令.因此,我不明白为什么x86架构的汇编语言不适用于所有x86机器,无论操作系统如何]



1> Jester..:

程序不仅仅是原始机器代码.可执行文件需要具有操作系统可以理解的特殊格式,因此它可以加载和运行代码.此外,代码需要某个特定的环境,例如库和系统调用(以及相应的调用约定).

要编译和运行汇编程序,首先需要先组装它,在这种情况下通过MASM运行它.但是,MASM本身是一个Windows可执行文件.它是Windows的可执行格式,它相应地使用库和操作系统功能.因此,您无法直接在mac os上运行它.之后,您通常还需要链接具有相同问题的代码.下一个问题是程序本身.MASM(以及工具链的其余部分)默认情况下也是以windows(或dos)为目标,因此创建的程序具有适当的格式.

理论上你可以使用windows和masm创建一个在mac os上运行的程序.这通常称为交叉编译.如果您的工具链不支持所需的mac格式,则需要手动创建所有内容.你显然还需要编写你的程序,以便它需要mac环境.例如,您不能使用dos中断或Windows库.

由于体系结构相同,因此您无需虚拟化CPU.你可以逃避模仿环境.一个例子是Windows模拟器wine,或cygwin在Windows上模拟unix.

一个非常粗略的比喻:人类语言使用相同的字母表,但您仍需要翻译.还有一些语言甚至不使用相同的字母,甚至没有字母.在这些情况下,您需要做更多的工作.


推荐阅读
  • 本文概述了JNI的原理以及常用方法。JNI提供了一种Java字节码调用C/C++的解决方案,但引用类型不能直接在Native层使用,需要进行类型转化。多维数组(包括二维数组)都是引用类型,需要使用jobjectArray类型来存取其值。此外,由于Java支持函数重载,根据函数名无法找到对应的JNI函数,因此介绍了JNI函数签名信息的解决方案。 ... [详细]
  • 通过Anaconda安装tensorflow,并安装运行spyder编译器的完整教程
    本文提供了一个完整的教程,介绍了如何通过Anaconda安装tensorflow,并安装运行spyder编译器。文章详细介绍了安装Anaconda、创建tensorflow环境、安装GPU版本tensorflow、安装和运行Spyder编译器以及安装OpenCV等步骤。该教程适用于Windows 8操作系统,并提供了相关的网址供参考。通过本教程,读者可以轻松地安装和配置tensorflow环境,以及运行spyder编译器进行开发。 ... [详细]
  • 【技术分享】一个 ELF 蠕虫分析
    【技术分享】一个 ELF 蠕虫分析 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 基于事件驱动的并发编程及其消息通信机制的同步与异步、阻塞与非阻塞、IO模型的分类
    本文介绍了基于事件驱动的并发编程中的消息通信机制,包括同步和异步的概念及其区别,阻塞和非阻塞的状态,以及IO模型的分类。同步阻塞IO、同步非阻塞IO、异步阻塞IO和异步非阻塞IO等不同的IO模型被详细解释。这些概念和模型对于理解并发编程中的消息通信和IO操作具有重要意义。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了2020年计算机二级MSOffice的选择习题及答案,详细解析了操作系统的五大功能模块,包括处理器管理、作业管理、存储器管理、设备管理和文件管理。同时,还解答了算法的有穷性的含义。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 嵌入式处理器的架构与内核发展历程
    本文主要介绍了嵌入式处理器的架构与内核发展历程,包括不同架构的指令集的变化,以及内核的流水线和结构。通过对ARM架构的分析,可以更好地理解嵌入式处理器的架构与内核的关系。 ... [详细]
  • 如何用JNI技术调用Java接口以及提高Java性能的详解
    本文介绍了如何使用JNI技术调用Java接口,并详细解析了如何通过JNI技术提高Java的性能。同时还讨论了JNI调用Java的private方法、Java开发中使用JNI技术的情况以及使用Java的JNI技术调用C++时的运行效率问题。文章还介绍了JNIEnv类型的使用方法,包括创建Java对象、调用Java对象的方法、获取Java对象的属性等操作。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • Linux下安装免费杀毒软件ClamAV及使用方法
    本文介绍了在Linux系统下安装免费杀毒软件ClamAV的方法,并提供了使用该软件更新病毒库和进行病毒扫描的指令参数。同时还提供了官方安装文档和下载地址。 ... [详细]
  • 【重识云原生】第四章云网络4.8.3.2节——Open vSwitch工作原理详解
    2OpenvSwitch架构2.1OVS整体架构ovs-vswitchd:守护程序,实现交换功能,和Linux内核兼容模块一起,实现基于流的交换flow-basedswitchin ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
author-avatar
youxiang574传奇_257
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有