导航:首页 > 源码编译 > 编译器把指令放在哪里

编译器把指令放在哪里

发布时间:2025-04-06 19:14:11

A. 计算机指令主要存放在哪

A、存储器。

计算机存储器(英语:Computer memory)是一种利用半导体、磁性介质等技术制成的存储资料的电子设备。其电子电路中的资料以二进制方式存储,不同存储器产品中基本单元的名称也不一样。

计算机存储器可分为内部存储器(又称内存或主存)和外部存储器,其中内存是CPU能直接寻址的储存空间,由半导体器件制成。内存的特点是访问速率快。

我们平常使用的程序,如Windows操作系统、打字软件、游戏软件等,一般都是安装在硬盘等外部记忆体上的,但必须把它们调入内存中运行,才能真正使用其功能,我们平时输入一段文字,或玩一个游戏,其实都是在内存中进行的,数据产生后不断地由内存向外部记忆体进行读写。

就好比在一个书房里,存放书籍的书架和书柜相当于电脑的外部记忆体,而我们工作的办公桌就是内存。通常我们把要永久保存的、大量的数据储存在外部记忆体上,而把一些临时的或少量的数据和程序放在内存上,当然内存的好坏会直接影响电脑的运行速度。

容量

存储器以二进制计算容量,基本单位是Byte:

1、1 Kilobyte(KB) =1,024B=210B

2、1 Megabyte(MB)=1,024KiB=220B=1,048,576B

3、1 Gigabyte(GB)=1,024MiB=230B=1,073,741,824B

4、1 Terabyte(TB)=1,024GiB=240B=1,099,511,627,776B

5、1 Petabyte(PB)=1,024TiB=250B=1,125,899,906,842,624B

6、1 Exabyte(EB) =1,024PiB=260B=1,152,921,504,606,846,976B

7、1 Zettabyte(ZB)=1,024EiB=270B

8、1 Yottabyte(YB)=1,024ZiB=280B

(1)编译器把指令放在哪里扩展阅读:

在计算机技术中,指令是由指令集架构定义的单个的CPU操作。在更广泛的意义上,“指令”可以是任何可执行程序的元素的表述,例如字节码。

在传统的构架上,指令包括一个操作码(opcode)——它指定要进行什么样的操作,例如“将存储器中的内容与寄存器中的内容相加”——和零个或者更多的操作数(operand)——它可能指定参与操作的寄存器、内存地址或者立即数(literal data)。操作数可能还包括寻址方式,它确定操作数的含义。

在超长指令字(VLIW)构架中(包括很多微指令(microcode)构架)多个并发的操作和操作数在一条单独的指令中被指定。

指令的长度相差悬殊,从一些微控制器(microcontroller)中的4位(bit)到一些超长指令字系统中的几百位。大部分现代的个人计算机、大型计算机、超大型计算机中的处理器的指令尺寸在16到64位之间。

在一些构架中,特别是RISC构架中,指令长度是固定的,通常与其构架的字长一致。在其他的构架中,指令有不同的长度,但通常是字节或者半个字的整数倍。

构成程序的指令很少以它在机器内部的数值形式而直接的被使用;它们可以被程序员通过汇编语言加以表示,或者,更常见的,被编译器生成。

B. 预编译的编译指令

预编译指令指示了在程序正式编译前就由编译器进行的操作,可以放在程序中的任何位置。常见的预编译指令有:
(1)#include 指令
该指令指示编译器将xxx.xxx文件的全部内容插入此处。若用<>括起文件则在系统的INCLUDE目录中寻找文件,若用 括起文件则在当前目录中寻找文件。一般来说,该文件是后缀名为h或cpp的头文件。
注意:<>不会在当前目录下搜索头文件,如果我们不用<>而用把头文件名扩起,其意义为在先在当前目录下搜索头文件,再在系统默认目录下搜索。
(2)#define指令
该指令有三种用法:
第一种是定义标识,标识有效范围为整个程序,形如#define XXX,常与#if配合使用;
第二种是定义常数,如#define max 100,则max代表100(这种情况下使用const定义常数更好,原因见注1);
第三种是定义函数,如#define get_max(a, b) ((a)>(b)?(a):(b)) 则以后使用get_max(x,y)就可以得到x和y中较大的数(这种方法存在一些弊病,见注2)。
第四种是定义宏函数,如#define GEN_FUN(type) type max_##type(type a,type b){return a>b?a:b;} ,使用时,用GEN_FUN(int),则此处预编译后就变成了 max_int(int a,int b){return a>b?a:b;},以后就可以使用max_int(x,y)就可以得到x和y中较大的数.比第三种,增加了类型的说明。
(3)#if、#else和#endif指令
这些指令一般这样配合使用:
#if defined(标识) //如果定义了标识
要执行的指令
#else
要执行的指令
#endif
在头文件中为了避免重复调用(比如说两个头文件互相包含对方),常采用这样的结构:
#if !(defined XXX) //XXX为一个在你的程序中唯一的标识符,
//每个头文件的标识符都不应相同。
//起标识符的常见方法是若头文件名为abc.h
//则标识为abc_h
#define XXX
真正的内容,如函数声明之类
#endif
注1:因为:const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误(边际效应)。
注2:例如get_max(a++, b)时,a++会被执行多少次取决于a和b的大小!所以建议还是用内联函数而不是这种方法提高速度。虽然有这样的弊病,但这种方法的确非常灵活,因为a和b可以是各种数据类型。
注3:可以查看网络的预处理命令,编排的比较简明。

C. Delphi的命令行编译命令

1. Delphi的命令行编译器(dcc32.EXE)允许你从DOS命令行方式实现IDE编译器(delphi32.exe)的所有功能。使用DOS命令运行命令行编译器的语法为:dcc32 [选项] [文件名] [选项]。
2. 你可以为命令行编译器指定多个参数。一个参数包含一个破折号“-”或“/”和紧跟着的一个选项字符构成。选项可以是任意顺序并且可以在源文件名前面或后面。
3. Delphi支持用编译器指令关键字描述的编译器指令。使用“$”和“D”命令行选项可以改变所有的默认编译器状态。用“$”和“D”命令行选项等同于在源文件的前面添加编译器指令。
4. 命令行编译器允许你输入相同的命令行参数,它将忽略所有除最后一个之外。这个方式,尽管通过配置文件你可以改变一些设置,你仍然可以覆盖它使用命令行参数。
5. 你可以设置一个编译选项列表到一个叫做DCC32.CFG的配置文件中,它将用于编译时附加到命令行参数后。配置文件的每一行都相当于一个额外的命令行参数插入到实际的命令行参数前。
6. 命令行编译器有两个命令行参数可以生成外部调试信息:MAP文件选项和调试信息选项。
7. 选项-V、-VN和-VR会指示编译器生成调试信息,它们能在命令行中组合使用。

阅读全文

与编译器把指令放在哪里相关的资料

热点内容
google开源程序员 浏览:920
登录火山怎么就服务器出错啥原因 浏览:286
苹果手机怎么把文件夹变成第一页 浏览:70
java程序员面试书籍 浏览:41
按名称顺序解压 浏览:947
插件化注解代码加密 浏览:776
如何编译py格式文件 浏览:859
四库全书里的算法 浏览:630
androidstudio示例 浏览:474
苹果手机通迅录怎么复制到安卓手机里 浏览:136
java接口构造函数 浏览:610
随云游戏app怎么下载 浏览:593
算法bt 浏览:587
西铁城l20机床编程 浏览:907
linux文件x 浏览:389
学编程的人都聪明吗 浏览:276
电脑服务器是什么联机 浏览:48
佛山3轴编程 浏览:369
中国加密市场交易量排行 浏览:102
单片机最小的系统封装 浏览:350