用java是可以写语言编译器的,用任何语言工具写都可以。各语言开发工具间只有开发效率的差异,没有可行不可行的区别。

编译器其实就是一个翻译工具,它可以把代码直接翻译成二进制文件交给CPU执行(二进制指令就是CPU的指令集,当然可以直接操作内存),当然,这个二进制文件需要符合操作系统的可执行文件的格式(PE格式或ELF格式)才能执行。

1、Java可以写C语言编译器,编译器就是一种把文本(源码)按语言语义的规则翻译成字节码的一套程序。

C通常不像Java跨平台,确定目标平台是什么,比如是x86、ARMS、MIPS、JVM,操作系统环境是什么,然后编写输出生成所在环境下能运行的字节码。

用任何语言工具写都可以。 各语言开发工具间只有开发效率的差异,没有可行不可行的区别。

2、C程序在CPU中运行的时候实际是没有指针、struct之类的东西,有的只是内存地址和各种跳转。C语言编译器就是将源文件转换为二进制,并交由CPU解释执行。C语言的各种语法、指针只是为了方便开发而抽象出来的东西。所以,如果真的存在这么一个用Java写的编译器,那么这个编译器需要能够理解C语言语法,并根据这些语法生成对应的字节数组(即汇编指令,这些汇编指令和C编译器生成的汇编指令相同)。如果这个字节数组还满足可执行文件的格式(在Windows中为PE格式,在Linux中为ELF格式),那么这堆字节数组组成的文件就可以在对应的操作系统下执行。

已被230人点赞

java c语言 for_Java能写C语言编译器吗相关推荐

  1. c语言作业雇人写,C语言作业的链表数据的读写

    问题的引入: 这学期C语言项目我选择做一个理财管理系统,数据存储使用链式映象,也在此基础上实现数据显示功能块.在完成了数据的统计显示,按时间段显示,按类别显示等功能后,才开始考虑数据的读写的文件操作功 ...

  2. 怎么用centos7运行c语言程序_写C语言程序,如何提升程序运行效率?我的一点经验分享给你们!...

    在编写C语言程序后,经常需要对源码进行优化,以提高程序的运行效率,下面简述几个常用的优化技巧以供大家参考: 1.C于代码在程序中的优化 现在的C编译器会自动对代码进行优化,但这些优化是对执行速度和代码 ...

  3. 下列python语言、返回结果不是uc_MKAN1-UC 5103作业代写、代做Analytics作业、Java,Python,c/c++程序语言作业代做...

    MKAN1-UC 5103作业代写.代做Analytics作业.Java,Python,c/c++程序语言作业代做 日期:2020-05-21 11:08 Marketing Analytics Sp ...

  4. java商城_商城系统常见开发语言及特点分享

    "对于软件开发的编程语言,其实没有万能灵药." 商城系统常见开发语言及特点 就目前而言,商城系统常见的开发语言有java.php..net等等.我们在搭建网上商城系统时,应该使用哪 ...

  5. 【C/C++】从技术学习和实际运用的角度来看,C/C++和Java到底区别在哪?C语言、C++学习路线?

    转自羊哥的公众号 这几个问题都是私信里常被问到的,也是我当时学习过程中的一些疑惑.谁说黑乎乎的命令行里运行的程序就没有用!这跟学什么编程语言.后续从事什么编程方向均无关,只要做编程开发,这四个计算机基 ...

  6. dart语言和java语言_Java不是文明语言吗?

    dart语言和java语言 几周前,我有机会学习iOS编程. 我的老板认为我更像是"计算机科学家",而不是开发人员,这意味着我可以将自己的知识应用于开发一两个iPad应用程序–我要 ...

  7. java是c语言吗_java和c语言的区别是什么

    什么是java Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个特征.Java语言作为静态面向对 ...

  8. 易语言如何调用c dll文件,易语言调用C++写的DLL

    直接调用会弹出堆栈错误的信息,原因是VS默认是__cdcel方式,而易语言是__stdcall,所以调用约定不一致导致堆栈错误. 解决方案很简单,易语言声明DLL函数时"在库中对应命令名&q ...

  9. 【絮叨.1】同时在写四门语言是怎样一种体验?

    魔笛手在发展初期并没有具体限制程序员使用哪一种编程语言,除了主流的Python,还有Node.JS.Go.Lua.C#.PHP等,加之目前公司正在使用Java重构原服务,光老张自己现在就要同时维护四门 ...

最新文章

  1. windows加载符号小计
  2. TX的8B/10B编码功能
  3. oracle如何查看表的字段是否存在,Oracle删除表、字段之前判断表、字段是否存在...
  4. Scrum联盟发布《2016年度Scrum状态调查报告》
  5. Cloud一分钟 |格力电器营收比去年增长500亿元; 红黄蓝加盟停不下来;中美双方同意停止相互加征新的关税...
  6. Ubuntu开机启动Python脚本
  7. 不重复地输出数(信息学奥赛一本通-T1245)
  8. 关于simulink中参数传递到工作空间
  9. Unity3D基础25:AudioSource声音组件
  10. Python单元测试框架之pytest -- fixtures
  11. 你是否有过出现图片有色差色偏的问题(python用matplotlib显示opencv绘制的图像)
  12. 金蝶云系统服务器,金蝶云星空-文件服务器配置指南
  13. You辉编程_用vue3.0开发移动app的流程
  14. [ustc]那些杀手不太冷
  15. Md5加密工具类DigestUtils
  16. 染色问题java_java地图路径染色寻找算法
  17. 【STL】STL函数总结,助你代码实用高逼格
  18. 牛客网 SQL17 10月的新户客单价和获客成本
  19. 如何查看直播间在线人数?观看软件数据分析
  20. 第19篇 基础(十九)详解QVector(数组)

热门文章

  1. 数字图像处理实验——Python语言实现
  2. Linux学习之如何在物理机上安装Linux发行版
  3. Junit4中Test Suite的用法
  4. linux文本处理脚本题,Linux文本处理工具sed练习题
  5. 得到品控手册_得到品控手册 一本令人惊喜的说明书
  6. oracle转换请求无法实施,Oracle服务正常,但不响应请求的问题
  7. 包管理工具conda极简教程
  8. 为什么链接不上mysql数据库_java链接不上数据库,怎么解决!
  9. python使用高阶函数实现_18.python高阶函数
  10. Android studio的Activity详解