【操作系统】计算机语言及编译技术简介

初识计算机语言 目录一、计算机的基本概念二、计算机的组成三、计算机语言概述四、交互方式四、文本文件和字符集五、进制六、环境变量 一、计算机的基本概念 什么是计算机? 计算机(computer)俗称电脑,是现代一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能。是能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。 二、计算机的组成 注释:图片摘自百度百科 三、计算机语言概述 人与人之间通常用语言来交流,有人说中文,有人说英语,而计算机也有它独特的计算机语言,计算机 阅读详情

【操作系统】计算机语言及编译技术简介
By Andy

---------------------------------------------------

 目录、摘要

---------------------------------------------------

计算机语言分类

编译技术简介

开源编译器

编译优化简介

计算机语言分类

根据语言的代分类

机器语言(1111 1111 1101 1000 1111 1111 1110 0000 0000 0000…….)

汇编语言(ADD AX, BX)

高级程序设计语言(Fortran Cobol Lisp C C++ C# Java)

面向特定应用语言(NOMAD SQL Postscript)

基于逻辑和约束的语言(Prolog OPS5)

根据任务的完成方式分类

强制式语言(C C++ C# Java)

声明式语言(ML Haskell)

根据语言的特征分类

冯·诺依曼语言(Fortran C)

面向对象语言(C++ C# Java Ruby)

脚本语言(Awk JavaScript Perl PHP Python Ruby Tel)

用各种语言罚写500遍

用各种语言罚写500遍

用各种语言罚写500遍

编译技术简介

编译技术简介

开源编译器

Tiny C Compiler:Tiny C Compiler 是一个微型的 C 语言编译器,支持 Windows 和 Linux 平台。

LLVM:LLVM从本质上来说,它不是一个编译器.它是一个编译器的架构.通俗的来说,它实现了一个库,在这个库上,可以

很容易的实现不同的编译相关的程序,当然,编译器自然是其中最重要的一个. 当然其他像编译时间的代码分析也是很

容易实现的。 LLVM定义了一个虚拟机的语言。然后再这个语言的基础上,实现了很多的功能,例如大多数的优化都是

基于这个虚拟机的语言来进行的。

Pcc:Pcc 是一个可移植的 C 编译器

MinGw:MinGw (Minimalist GNU for Windows)是一套以 Gnu gcc/egcs 计划为基础的编译器,其可编译出在 Win32

系统上执行的 ojbect code。 “Mingw32” 是取 Minimalist Gnu-Win32 计划之意,其目标为提供一个可在 Win32

平台上,开发 Win32 native code 的编译器,而非提供 unix 程式移植到 Win32 平台之用,此即为其 minimalist

之意。 Mingw32 使用 Microsoft runtime libraries ,因此由其产生之程式,执行时不需先行安装。

GNU Pascal:GNU Pascal 是一个免费开源的 Pascal 编译器。

Parrot:Parrot 应动态类型语言(如Perl和Python)的明确需求而设计,并要求这些语言写的程序比用静态语言开发

的虚拟机(JVM,.NET)能更高效地运行。Parrot也被设计成在编译到它上面的语言之间提供互操作性。理论上,你可

以 Perl写一个类,用Python写一个子类,然后在Tcl程序里面实例化并使用那个子类。在历史上,Parrot始于Perl6的

运行时间。和Perl5不同,Perl6的编译器和运行时间(VM)要更加清晰地分开。

FlASM:FLASM,名字是由FLASH和ASM而来,用汇编语言来写ACTION SCRIPT,FLASM能帮你将SWF里面的AS转换成汇编语

言,然后你要做的是优化这些代码,最后交由FLASM再把他转回SWF,FLASM的语法与汇编类似

Ja.Net:Ja.NET 可视为Java之上的.NET Remoting(Microsoft .NET Framework内的主要组件)的堆栈实作,而在Java

平台上提供Ja.NET的执行时期模块(Run time),可支持TCP/IP、HTTP等沟通管道,也可同时支持SOAP或是二进制互通

协议以提升沟通效率。透过此执行时期模块,.NET与Java /J2EE的数据类型不仅可以对应,还能进行双向的沟通。

Ja.Net的编译器基于Eclipse JDT,Eclipse JDT能够修改生成IL,也能生成Java字节码。

FreeBasic:FreeBasic 是一个免费开源的Basic语言编译器。

Free pascal:Free Pascal (aka FPK Pascal) 是一个支持32/64位系统的专业Pascal编译器。支持包括如下处理器:

Intel x86, Amd64/x86_64, PowerPC, PowerPC64, Sparc, ARM. 支持的操作系统包括:Linux, FreeBSD, Mac OS

X/Darwin, Mac OS classic, DOS, Win32, Win64, WinCE, OS/2, Netware (libc and classic) 以及MorphOS....


开源编译器

Shed Skin:Shed Skin 是一个用来将 Python 程序 转成 C++ 程序的编译工具。

MTASC:MTASC 是第一个开源的 ActionScript 编译器。

Flat Assembler:Flat Assembler 是一个快速高效的80x86的汇编工具,支持DOS、Windows、Linux操作系统,支持包

括 8086-80486/Pentium instructions with MMX, SSE, SSE2, SSE3, and 3DNow! extensions and x86-64 (both

AMD64 and EM64T) 指令集。

Jadu:内容管理公司 Jadu 最近发布了一个工具,可以让 PHP 和 .NET 这对冤家和平共处。他们开发了一个叫做

Phalanger PHP compiler 的工具,可以将 PHP 程序编译成本地 .NET 程序执行。他们还准备将这一工具开源。据

Jadu CEO Suraj Kika 介绍,这个工具对 PHP 程序进行编译,编译成 .NET 框架下下的本地程序。比如,你想用

WordPress,但你属于微软阵营,你可以将 WordPress 编译成可执行文件,放到 .NET 中并在 Visual Studio 中

针...

Great Cow BASIC:Great Cow BASIC是一个PIC 10/12/16/18微处理区系列的BASIC编译器。三个主要目标:删除重复

需要装配的指令,生产高效率的代码,并可以很容易移植到另一个微处理。功能和特点标准的基本流量控制报表支持

乘,除,添加,减,布尔运算和比较位,字节, Word和字符串数据类型,除了字节数组子程序和函数内置汇编,在大

多数情况下,没有任何特别说明数据表支持大多数的8位PIC微控制器等待命令,从而使相同长度拖延不管的时钟速度

标准...

BSDBuild:BSDBuild is a portable, self-contained build system with support for concurrent building,

configure script generation, and IDE "project file" generation. It is derived from the original 4.4BSD

build system, but it offers a degree of portability comparable to autotools....

GCC for SPARC:这是专为 Sun 的 SPARC 系统优化的 GCC 编译器。

TinyCOBOL:TinyCOBOL 是一个免费的COBOL 编译器 ,支持Linux系统。

Parity:Parity 可以用来将 Unix 环境下的项目编译成 Windows 下的可执行程序或者是动态库。

开源编译器

GCC

开源编译器

LLVM

编译优化简介

编译质量衡量标准

代码体积

资源占用

代码运行效率

代码通用性

选择更优秀的编译器

选择更适合的编译选项

GCC可选优化编译选项

分支预测优化:

-fbranch-probabilities 在使用“-fprofile-arcs”选项编译程序并执行它来创建包含每个代码块执行次数的文件之

后,程序可以利用这一选项再次编译,文件中所产生的信息将被用来优化那些经常发生的分支代码。如果没有这些信

息,gcc将猜测那一分支可能经常发生并进行优化。这类优化信息将会存放在一个以源文件为名字的并以".da"为后缀

的文件中。

-fprofile-arcs 在使用这一选项编译程序并运行它以创建包含每个代码块的执行次数的文件后,程序可以再次使用“

-fbranch-probabilities”编译,文件中的信息可以用来优化那些经常选取的分支。如果没有这些信息,gcc将猜测哪

个分支将被经常运行以进行优化。这类优化信息将会存放在一个以源文件为名字的并以".da"为后缀的文件中。

循环展开优化

-fmove-all-movables 将所有不变的表达式移动到循环体之外,这种做法的好坏取决于源代码中的循环结构。

-funroll-loops 如果在编译时可以确定迭代的次数非常少而且循环中的指令也非常少,可以使用该选项进行循环展开

,以驱除循环和复制指令。

寄存器优化

-fforce-addr 必须将地址复制到寄存器中才能对他们进行运算。由于所需地址通常在前面已经加载到寄存器中了,所

以这个选项可以改进代码。


GCC可选优化编译选项

面向目标机器的硬件优化

大多数程序和库在编译时默认的优化级别是“2”(使用gcc选项:“-O2”)并且在Intel/AMD平台上默认按照i386处理器

来编译。如果你只想让编译出来的程序运行在特定的平台上,就需要执行更高级的编译器优化选项,以产生只能运行

于特定平台的代码。

一种方法是修改每个源码包中的Makefile文件,在其中寻找CFLAGS和CXXFLAGS变量(C和C++编译器的编译选项)并修改

它的值。一些源码包比如binutils, gcc, glibc等等,在每个子文件夹中都有Makefile文件,这样修改起来就太累了

!

GCC可选优化编译选项

面向目标机器的硬件优化

"-march"选项表示为特定的cpu类型编译二进制代码(不能在更低级别的cpu上运行)

GCC可选优化编译选项

面向目标机器的硬件优化


GCC可选优化编译选项

全局优化

GCC可选优化编译选项

其他

-malign-double 将double, long double, long long对齐于双字节边界上;有助于生成更高速的代码,但是程序的尺

寸会变大。

-maccumulate-outgoing-args 指定在函数引导段中计算输出参数所需最大空间,这在大部分现代cpu中是较快的方法

;缺点是会增加代码尺寸。

-fprefetch-loop-arrays 生成数组预读取指令,对于使用巨大数组的程序可以加快代码执行速度,适合数据库相关的

大型软件等。

-fstack-check 为防止程序栈溢出而进行必要的检测,在多线程环境中运行时才可能需要它。


配图原文地址:http://user.qzone.qq.com/1780551083/blog/1323156049

本文原创自无线技术运营空间: http://wireless.qzone.qq.com 及 http://blog.youkuaiyun.com/wireless_tech (专注无线技术运营——无线技术(操作系统/数据库/WEB前端/负载均衡/系统容灾/系统安全/短信接入/WAP接入/3G等)、无线业务运营、无线开放平台、统计分析(用户行为分析/数据挖掘)、CP合作,联系我们:1780551083@qq.com)

《代码交织:计算机语言与AI的共生进化》:此文为AI自动生成 在科技飞速发展的当下,计算机语言与人工智能(AI)宛如两颗璀璨星辰,照亮了数字化时代的天空。计算机语言作为人与计算机沟通的桥梁,种类繁多,各具特色,从古老的机器语言到现代简洁高效的 Python 语言,它们塑造了软件世界的万千形态。而 AI 则以惊人的速度改变着我们生活的方方面面,从智能语音助手到自动驾驶汽车,其强大的智能处理能力让我们感受到科技的无限潜力。那么,当计算机语言与 AI 相遇,会碰撞出怎样的火花呢?让我们一同开启这场精彩的探索之旅,揭开它们神秘的面纱,领略代码世界的无限魅力。 阅读详情

相关推荐

Unix高级编程:操作系统 、计算机语言、大型软件组织

【什么是操作系统?】 方便简单/安全保障 操作系统:对计算机的"硬件资源进行管理" 操作系统:对计算机的"软件资源进行管理" 操作系统:是一款"软件" 操作系统是管理计算机资源(硬件资源和软件资源)的一款软件。 操作系统:unix,windows,linux 在unix操作系统之上,开发应用软件。 "GNU"项目组开发的应用程序:shell,vi,gcc "GNU/Lin

Hello, New World! 668

gcc 内存对齐

CPU以字节为单位编址,而C语言指针以指向的数据类型长度作自增和自减。 gcc下的double的alignment-requirement 在用编译选项-malign-double的时候,double的alignment-requirement是双字(32位机器上就是8),用-mno -align-double的时候,double的alignment-requirement是单字。在我的机器上

yiranlun3的专栏 1067

汇川AM系列后台安全管理与用户权限的设置方法

汇川AM系列后台安全管理与用户权限的设置方法。

viixin的博客 8452

gcc编译选项说明(1)

gcc编译选项

8026

从DIY桌面CNC到工业机器人:手把手教你用LinuxCNC搭建自己的第一台数控系统(基于Xenomai实时补丁)

本文详细介绍了如何使用LinuxCNC和Xenomai实时补丁搭建高性价比的数控系统,从硬件选型到实时系统构建,再到HAL硬件抽象层实战和G代码加工,手把手教你打造从DIY桌面CNC到工业机器人的完整解决方案。

weixin_28727975的博客 286

Win10本地账户密码遗忘?巧用指纹/PIN快速重置(家庭版/专业版通用指南)

本文提供了一份详细的Win10本地账户密码遗忘自救指南,适用于家庭版和专业版用户。核心方法是利用已登录的指纹或PIN码权限,通过创建新的管理员账户或使用系统工具,安全重置遗忘的本地账户密码,无需第三方工具或重装系统,有效保护个人数据。

e6f7g8h9i的博客 576

GCC注意笔记

大多数程序和库在编译时默认的优化级别是"2"(使用gcc选项:"-O2")并且在Intel/AMD平台上默认按照i386处理器来编译。如果你只想让编译出来的程序运行在特定的平台上,就需要执行更高级的编译器优化选项,以产生只能运行于特定平台的代码。 一种方法是修改每个源码包中的Makefile文件,在其中寻找CFLAGS和CXXFLAGS变量(C和C++编译器的编译选项)并修改它的值。一些源码包比...

Get my world,break free! 272

VisualStudio2022配置CGAL

vs2022和vs2017安装配置boost没什么区别,只需要注意boost的msvc得是14.3的,这玩意跟visualstudio版本挂钩的。压缩包解压,得到下面这两文件,然后把auxiliary这个文件挪到CGAL-5.6里面就行了。我用cgal读取一个stl模型,并输出相关信息(想可视化的话需要安装Qt,不想装Qt也可以装VTK)然后下载下面这两个压缩包。照着下面的截图填就完事了。

weixin_43850909的博客 1169

java字节对齐 32 64_32位和64位系统,数据类型字节数和结构体对齐区别

程序的结构体对齐字节数由编译选项参数来控制。默认情况下,32位器为4字节对齐;64位机器为8字节对齐;`-malign-double'`-mno-align-double'ControlwhetherGCCaligns`double',`longdouble',and`longlong'variablesonatwowordboundaryoraoneword...

weixin_34501374的博客 516

VS Code 重大更新:Agent Skills完美支持!

代码不会骗人,但你的 LLM 可能会编个故事——除非你给它一本《技能手册》。——某位深夜调试成功的 Go 工程师。

weixin_44058951的博客 3458

手把手带你实现DAF-Net:零代码基础入门红外与可见光图像融合(从理论到实战)

本文介绍了红外与可见光图像融合技术及DAF-Net网络的应用。红外图像能捕捉热源但缺乏细节,可见光图像纹理丰富但在低光环境下表现不佳。DAF-Net采用双分支特征提取和动态注意力融合架构,能智能分配特征权重实现优势互补。文章详细讲解了环境配置、数据集准备(如TNO数据集)和预处理方法,并提供了DAF-Net的核心代码实现,包括特征提取、注意力融合和图像重建模块。通过该技术可在安防、自动驾驶等领域获得更优质的融合图像,提升视觉感知能力。

m0_71589036的博客 228

Big-Endian, Little-Endian和字节码对齐方式(上)

这一部分先介绍大端(big-endian)和小端(little-endian), 然后讨论两种情况下(缺省对齐和#pragma pack指令)的字节码对齐方式。最后用一套面试题讨论结构体嵌套情况下的对齐问题。下一部分将介绍bit fields的对齐方式及在大端和小端组织方式下的数

ljsspace的专栏 1万+

用一套可追溯的闭环,把设备变成可管理的资产:SAP S/4HANA Asset Management 模块详解

摘要:SAP S/4HANA的资产管理模块(EAM)通过标准化流程管理企业资产全生命周期,解决资产状态、需求和资源的不确定性。系统将资产抽象为技术对象,支持纠正性和预防性维护流程,通过维护工单实现可执行的工作包,并与物料管理、财务、生产计划等模块集成形成管理闭环。该模块可帮助降低非计划停机时间,通过数据驱动决策优化维护策略,提升资产可用率和运营效率。(149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 249

高级计算机语言跨平台开发的关键技术与实践

在开发一款Flutter移动应用时,通过优化编译参数,如启用代码压缩、优化函数调用等,进一步提升应用在不同平台上的性能表现,为用户提供流畅体验。本文深入探讨高级计算机语言跨平台开发的关键技术,包括虚拟机技术、中间件应用、编译器优化以及UI框架选择等,结合Java、C#、React Native等语言和框架的实践案例,分析技术应用效果与挑战,为开发者实现高效跨平台开发提供全面指导。若要切换到Oracle数据库,只需修改连接配置和方言属性,应用代码无需大幅改动,实现数据层跨平台操作,提高开发灵活性。

2501_91530543的博客 983

【异常】OpenClaw提示Message ordering conflict - please try again. If this persists, use /new to start a fr

摘要:OpenClaw助手出现"Message ordering conflict"异常时,表明会话消息排序冲突,主要由消息队列时序错乱、会话同步异常或上下文过载引起。解决方案包括:1)基础重试暂停后单发指令;2)最优方案是发送/new重置会话;3)极端情况下需重启客户端或检查指令格式。预防建议包括避免高频并发指令、定期重置会话及确保网络稳定。该报错属业务层异常,不影响账号安全。

奶爸的编程之路,也就一周冷个三天 422

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

哪些计算机语言是静态编译的,哪些是动态编译的

•*** 执行流程:生成可直接运行的二进制文件(如.exe)或平台无关的字节码(如.class)。• 类型检查:类型在运行时动态推断,变量无需显式声明类型(如a = 10→a = "text"合法);•*** 编译时机:代码在运行时逐行解释或动态编译(如 JIT),无预编译步骤;典型产物 机器码(C)、字节码(Java) 无预编译产物或中间指令(opcode)4。类型检查阶段 编译期检查(强制声明类型)13 运行期检查(类型可动态变更)13。

slty_123的博客 540

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

计算机语言概述

本文概述了计算机语言的分类与特点,从底层机器语言到高级编程语言,详细介绍了各类语言的用途、优缺点及代码示例。机器语言和汇编语言适用于硬件级编程,而C、C++、Java等高级语言广泛用于系统开发、Web应用和数据分析。脚本语言如Python和JavaScript则强调开发效率。此外,还介绍了标记语言(HTML)和查询语言(SQL)的应用场景。通过对比不同语言的特点,帮助读者理解编程语言的多样性及其适用领域。

2301_79411237的博客 1678

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【计算机语言】浅谈 — 计算机语言分类

计算机语言分类

Loup&卡普的博客 772

5分钟了解计算机语言编程工具

计算机语言编程工具

q2243088760的博客 659

计算机语言处理相关知识要点区分汇总

对计算机语言的归纳,以及计算机编程语言中易混淆的翻译、编译、解释、汇编、编译性语言、解释型语言、动态语言、静态语言、动态类型语言、静态类型语言、强类型语言、弱类型语言等概念的汇总

bay_Tong桐小白的博客 668

关于计算机语言

计算机语言主要分为四类: - 低级语言 - 高级语言 - 专用语言 - 脚本语言 1、低级语言 - 机器语言、汇编语言和符号语言。 - 汇编语言源程序必须经过汇编,生成目标文件,然后执行。 2、高级语言 - BASIC(True basic、Qbasic、Virtual Basic)、C、C++、PASCAL、FORTRAN、智能化语言(LISP、Prolog)

一名教育的被实验者 577

计算机语言有哪些

计算机语言的种类非常的多,总的来说可以分成机器语言、汇编语言、高级语言三大类。机器语言和汇编语言是面向机器的低级语言。当计算机语言发展到第三代时,就进入了「面向人类」的语言阶段,被人们称之为「高级语言」。  机器语言  是用二进制代码表示的计算机(CPU)能直接识别和执行的一种机器指令的集合,具有灵活、直接执行和速度快等特点。  用机器语言编写程序,编程人员要首先熟记所用计算机的全部指令代码和代码

武汉产品经理 2813

UC学习day02 计算机语言发展史 操作系统 大型项目的架构

一 了解操作系统 GNU/LINIX操作系统 ubuntu linux内核+GNU应用程序+自己开发了一些小程序 套件 unix linux windows macos ios andorid XENIX informix 磁盘的管理 内存的管理 进程的管理 网络通讯 中断管理 终端管理 驱动 … 帮助的获取 man command man 1 command ls(1...

weixin_43789711的博客 205

Java基础速通-关于计算机语言

Java作为一特殊的高级语言,采用了半编译半解释的方式运行:首先源代码被编译成平台无关的字节码,然后由JVM在运行时解释执行这些字节码。(Computer Language)是人与计算机之间通信的语言,它主要由一些指令组成,这些指令包括数字、符号和语法等内容,程序员可以通过这些指令与计算机进行交互。高级语言是为了提高生产效率而设计的,它们更加接近自然语言或数学表达式,减少了对具体硬件细节的关注。计算机所能识别的语言只有机器语言,但通常人们编程时,不采用机器语言,这是因为机器语言由二进制的。

2502_91646135的博客 1403

计算机语言&Python解释器

[TOC] 1.计算机语言的分类 1.1机器语言 由于计算机内部只能接受二进制代码,因此,用二进制代码0和1描述的指令称为机器指令,全部机器指令的集合构成计算的机器语言机器语言属于低级语言 1.2汇编语言 汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过使用英文指令标识符,具备一定的逻辑性,便于理解和记忆但同样还是很复杂,很冗余,一个简单的功能,需要写很多的程序代码但还是有优点的,用...

weixin_33806914的博客 238

计算机语言的发展史

计算机语言的发展史 计算机语言底层逻辑 计算机的底层数学逻辑,是二进制,也就是“布尔运算”分别为:逻辑与运算、逻辑或运算,逻辑非运算,“逻辑异或运算。此外在门电路中还有:同或运算、与非运算、或非运算。共七种。 计算机语言的种类 C语言、C++、汇编语言、Pascal语言、java、C# 这几种语言的发展史 二十世纪四十年代当计算机刚刚问世的时候,程序员必须手动控制计算机。当时的计算机十分昂贵,唯一想到利用程序设计语言来解决问题的人是德国工程师楚泽(konradzuse)。不久后,计算机的价格大幅度下跌,

gy161515的博客 1371
上一篇: 【经验总结】Bash Pitfalls(原创翻译)
下一篇: 【应用软件】JVM学习
wireless_tech
博客等级 码龄16年 23粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值