① c语言的编译与处理器的指令集有关吗一定要CISC吗RISC可不可以
C语言只是用于描述问题和算法的一种语言,而在实际机器上真实运行的却是各处理器自己的机器指令。编译器的工作就是将C语言翻译为机器指令。对你的问题答复如下:1. C语言与指令系统没有关系,但是编译器翻译的指令与指令系统有关系;2.无论CISC还是RISC,编译器都可以将C语言翻译为对应的机器指令。
② 我没用过C语言,请问怎样将.c文件转换成.bin文件,需要什么编译软件吗
在linux上,使用gcc编译器,可以直接将它编译为.bin文件。
不过你说你没用过C语言,不知道你是没有编程基础,还是有其他语言的基础。
如果完全没有编程基础,那对你来说,会很麻烦的。
③ 请问在计算机中有个缩写RISC是代表什么意思ARM又是什么嵌入式系统开发是什么
RISC即"精简指令集计算机"。它是针对传统处理器指令系统的缺陷提出来的,传统处理器(如Intel体系)的指令系统越来越复杂,不仅导致处理器研制周期变长,而且还有难以调试、难以维护等一些自身无法克服的困难。RISC把着眼点放在如何使处理器的结构更加简单合理及提高运算速度上。它优先选取使用频率最高的简单指令(一般只有50米),避免使用复杂指令,一般将指令长度固定为32位,且多数为单周期指令。指令格式和寻址方式、种类减少,缩短了译码时间,压缩了机器周期。内部以硬布线控制逻辑为主,不用或少用微码控制等,这些措施大大提高了RISC处理器的运算速度。K6处理器的内核就是RISC超标准量体系结构。
CISC(复杂指令集计算机)和RISC(精简指令集计算机)是当前CPU的两种架构。它们的区别在于不同的CPU设计理念和方法。 早期的CPU全部是CISC架构,它的设计目的是要用最少的机器语言指令来完成所需的计算任务。比如对于乘法运算,在CISC架构的CPU上,您可能需要这样一条指令:MUL ADDRA, ADDRB就可以将ADDRA和ADDRB中的数相乘并将结果储存在ADDRA中。将ADDRA, ADDRB中的数据读入寄存器,相乘和将结果写回内存的操作全部依赖于CPU中设计的逻辑来实现。这种架构会增加CPU结构的复杂性和对CPU工艺的要求,但对于编译器的开发十分有利。比如上面的例子,C程序中的a*=b就可以直接编译为一条乘法指令。今天只有Intel及其兼容CPU还在使用CISC架构。 RISC架构要求软件来指定各个操作步骤。上面的例子如果要在RISC架构上实现,将ADDRA, ADDRB中的数据读入寄存器,相乘和将结果写回内存的操作都必须由软件来实现,比如:MOV A, ADDRA; MOV B, ADDRB; MUL A, B; STR ADDRA, A。这种架构可以降低CPU的复杂性以及允许在同样的工艺水平下生产出功能更强大的CPU,但对于编译器的设计有更高的要求。
RISC 和CISC 是目前设计制造微处理器的两种典型技术,虽然它们都是试图在体系结构、操作运行、软件硬件、编译时间和运行时间等诸多因素中做出某种平衡,以求达到高效
的目的,但采用的方法不同,因此,在很多方面差异很大,它们主要有:
(1) 指令系统:RISC 设计者把主要精力放在那些经常使用的指令上,尽量使它们具有简单高效的特色。对不常用的功能,常通过组合指令来完成。因此,在RISC 机器上实现特殊功能时,效率可能较低。但可以利用流水技术和超标量技术加以改进和弥补。而CISC 计算机的指令系统比较丰富,有专用指令来完成特定的功能。因此,处理特殊任务效率较高。
(2) 存储器操作:RISC 对存储器操作有限制,使控制简单化;而CISC 机器的存储器操作指令多,操作直接。
(3) 程序:RISC 汇编语言程序一般需要较大的内存空间,实现特殊功能时程序复杂,不易设计;而CISC 汇编语言程序编程相对简单,科学计算及复杂操作的程序社设计相对容易,效率较高。
(4) 中断:RISC 机器在一条指令执行的适当地方可以响应中断;而CISC 机器是在一条指令执行结束后响应中断。
(5) CPU:RISC CPU 包含有较少的单元电路,因而面积小、功耗低;而CISC CPU 包含有丰富的电路单元,因而功能强、面积大、功耗大。
(6) 设计周期:RISC 微处理器结构简单,布局紧凑,设计周期短,且易于采用最新技术;CISC 微处理器结构复杂,设计周期长。
(7) 用户使用:RISC 微处理器结构简单,指令规整,性能容易把握,易学易用;CISC微处理器结构复杂,功能强大,实现特殊功能容易。
(8) 应用范围:由于RISC 指令系统的确定与特定的应用领域有关,故RISC 机器更适合于专用机;而CISC 机器则更适合于通用机
④ 单片机RISC结构是什么
.CISC(complex instruction set computer)即复杂指令集,在20世纪90年代前被广泛的使用,其特点是通过存放在只读存储器中的微码(microcode)来控制整个处理器的运行。
一条指令往往可以完成一串运算的动作,但却需要多个时钟周期来执行。随着需求的不断增加,设计的指令集越来越多,为支持这些新增的指令,计算机的体系结构会越来越复杂。然而,在CISC指令集的各种指令中,其使用频率却相差悬殊,大约有20%的指令会被反复使用,占整个程序代码的80%。而余下的80%的指令却不经常使用,在程序设计中只占20%,显然,这种结构是不太合理的。
RISC和CISC在构架上有着几个不同的地方。
1)首先是指令集的设计上,RISC构架的指令格式和长度通常是固定的(如ARM是32位的指令)、且指令和寻址方式少而简单、大多数指令在一个周期内就可以执行完毕;CISC构架下的指令长度通常是可变的、指令类型也很多、一条指令通常要若干周期才可以执行完。由于指令集多少与复杂度上的差异,使RISC的处理器可以利用简单的硬件电路设计出指令解码(decode)功能,这样易于流水线的实现。相对的CISC则需要通过只读存储器里的微码来进行解码,CISC因为指令功能与指令参数变化较大,执行流水线作业时有较多的限制。
2)其次,RISC在结构设计上是一个载入/存储(load/store)的构架,只有载入和存储指令可以访问存储器,数据处理指令只对寄存器的内容进行操作。为了加速程序的运算,RISC会设定多组的寄存器,并且指定特殊用途的寄存器。CISC构架则允许数据处理指令对存储器进行操作,对寄存器的要求相对不高。
RISC(精简指令集计算机)和CISC(复杂指令集计算机)是当前CPU的两种架构。它们的区别在于不同的CPU设计理念和方法。
早期的CPU全部是CISC架构,它的设计目的是要用最少的机器语言指令来完成所需的计算任务。比如对于乘法运算,在CISC架构的CPU上,您可能需要这样一条指令:MUL ADDRA, ADDRB就可以将ADDRA和ADDRB中的数相乘并将结果储存在ADDRA中。将ADDRA, ADDRB中的数据读入寄存器,相乘和将结果写回内存的操作全部依赖于CPU中设计的逻辑来实现。这种架构会增加CPU结构的复杂性和对CPU工艺的要求,但对于编译器的开发十分有利。比如上面的例子,C程序中的a*=b就可以直接编译为一条乘法指令。今天只有Intel及其兼容CPU还在使用CISC架构。
RISC架构要求软件来指定各个操作步骤。上面的例子如果要在RISC架构上实现,将ADDRA, ADDRB中的数据读入寄存器,相乘和将结果写回内存的操作都必须由软件来实现,比如:MOV A, ADDRA; MOV B, ADDRB; MUL A, B; STR ADDRA, A。这种架构可以降低CPU的复杂性以及允许在同样的工艺水平下生产出功能更强大的CPU,但对于编译器的设计有更高的要求。
⑤ 怎么把C语言代码转换为MIPS
把C语言代码转换为MIPS:
以下是c语言代码:
while (candidate_gcd <= min)
{
if (((a mod candidate_gcd) == 0) &&((b mod candidate_gcd) ==
0))
{
current_gcd = candidate_gcd;
}
candidate_gcd = candidate_gcd + 1;
}
以下为转换为mips后的代码:
首先设置变量:
candidate_gcd = $t0
min = $t1
a mod candidate_gcd = $t2
b mod candidate_gcd = $t3
current_gcd = $t4
$t6 = 0
$t5
代码如下:(绿色为注释)
Label3: //设置标签Label3
ble $t0,$t1,Label //当$t0 小于等于$t1 时,跳到标签Label
Label: //设置标签Label
Add $t5,$t2,$t3 //将$t2 和$t3 相加赋值给$t5
Li $t6,0 //给$t6 赋值为0
Leq $t5, $t6,Label1 //判断如果$t6=$t5=0,跳到标签Label1
Label1: //设置标签Label1
Move $t4, $t0 //$t4=$t0
Addi $t0, $t0,1 //$t0=$t0+1(自加加)
J Label3 //跳到标签Label3,这里其实就是实现c 语言
中的while 无限循环
⑥ C语言和c语言编译系统有什么区别两者是包含关系吗
无区别,只不过编译器不一样罢了。因为不同的cpu构架有不同的指令集。而嵌入式基本使用RISC结构的cpu,需要使用pc上的cpu编译出在能嵌入式cpu上运行的二进制程序。这叫交叉编译。pc上的程序不可以直接在其他cpu上运行,需要重新编译。 因为编译器不一样,执行的c语言标准就跟编译器相关。 管理内存映射,设置中断系统等在pc上也有,不是嵌入式的专利。 只是做嵌入式里的界面、网络、文件编程的话,跟pc上几乎没有差别,因为有操作系统罩着。如果开发驱动程序,就要求你对所使用的cpu和板子的结构很了解,也就是看得懂硬件手册即可。 另外嵌入式环境同pc的差别 如cpu位数、硬件资源紧缺等是需要程序员考虑的
⑦ C语言文件的编译与执行的四个阶段并分别描述
开发C程序有四个步骤:编辑、编译、连接和运行。
任何一个体系结构处理器上都可以使用C语言程序,只要该体系结构处理器有相应的C语言编译器和库,那么C源代码就可以编译并连接到目标二进制文件上运行。
1、预处理:导入源程序并保存(C文件)。
2、编译:将源程序转换为目标文件(Obj文件)。
3、链接:将目标文件生成为可执行文件(EXE文件)。
4、运行:执行,获取运行结果的EXE文件。
(7)c编译为riscv扩展阅读:
将C语言代码分为程序的几个阶段:
1、首先,源代码文件测试。以及相关的头文件,比如stdio。H、由预处理器CPP预处理为.I文件。预编译的。文件不包含任何宏定义,因为所有宏都已展开,并且包含的文件已插入。我归档。
2、编译过程是对预处理文件进行词法分析、语法分析、语义分析和优化,生成相应的汇编代码文件。这个过程往往是整个程序的核心部分,也是最复杂的部分之一。
3、汇编程序不直接输出可执行文件,而是输出目标文件。汇编程序可以调用LD来生成可以运行的可执行程序。也就是说,您需要链接大量的文件才能获得“a.out”,即最终的可执行文件。
4、在链接过程中,需要重新调整其他目标文件中定义的函数调用指令,而其他目标文件中定义的变量也存在同样的问题。