1. 关于编译器
看来你还没入门哦,就想写一个操作系统了
嗯!有志不错,相信有一天你会成功的。
一般地说写一个OS你要会一门高级语言(如C++)一门低级语言(如汇编asm)高级语言用来做界面这方面比较容易一点。而低级用来做低层驱动这方面是高级语言所不能相比的。
当然C语言介于两者之间,也能对硬件编程,但C是16位的程序对于图形处理不是很好,我个人建议你低级语言用汇编,对硬件编程时没有那么抽象,想传送的数据很清楚知道来去的方面,但要对硬件这方面的知道要了解。还有就是像要懂操作系统原理还要知道怎么去实践这些原理这些才是重要的,选择语言不是难事,给你一个组合吧(C和asm)虽然不能做出XP这种效果来,但这个图形操作系统还是很的,就看你自己的功夫了。
对于你补充的问题呐,程序的位数好像指CPU的寄存器的位数吧,在386以前的CPU好像一条指令大是16位的(当然有的指令没这么大,有8位的)在386后的新加的指令中才有32位的,为了使386以后的CPU能使用以前的指令,规定在16位指令加上不同的指令前缀,形成32位指令形式,这里的32指令就是32位程序的指令,而你说的64位程序。。在我所学的指令里没有64位的指令,但以以前的指令在在64位上运行,也要兼容的问题吧!之所以有64位的CPU所来是指CPU一次处理数据的位数,比如说32的CPU一次能处理32位的数据,而要处理64位的就要分两次从内存中取数据而占用总线,这样会使CPU有空闲,而64位的CPU只要一次就行了,所以你理解错了,
最后一个问题是人家生在那个年代,和人家有远见,成绩不好并不代表实践不好,理论和实践是两回事,理论在好不会实践也是废话,所以人家敢做,在实践中学习,在加上机遇。这个事不是你我能说清的,只能说说个人见解罢了。。
对于计算机硬件的知道只能告诉你这么之了,,大家相互学习,共同进步吧!!
如果你想找资料的话!你把你的邮箱留下,我这有硬件,操作系统,指令这些用于写操作的资料!!
2. 为什么C语言的编译器编译生成的EXE文件在关掉编译器之后打开就一闪而过呢
因为程序运行完会自动关闭,你可以在程序的最后写上 getchar(); 进行人为暂停,这样就能看到程序的内容输出,就不会闪过了。
3. pic单片机编译成功后,不运行
可能是你没有运行它,执行c++,需要两步,第一步编译(编译成功后生成执行文件),第二步,运行(运行编译生成的执行文件)。
编译器是将“一种语言”翻译为“另一种语言”的程序。编译器的主要工作流程是源代码→预处理器→编译器→目标代码→链接器→可执行程序。
PIC单片机的C编译器只有HI-TECH公司出品PICC编译器,和CCS公司的CCS编译器。还有PIC的生产商Microchip公司自行生产的只针对PIC18/PIC24/dsPIC/PIC32系列单片机的C语言编译器MCC(MCC18/MCC30/MCC32)。IAR软件不能编译PIC的C语言或汇编语言。
4. 计算机c语言 为什么经过编译就可以执行,没有经过连接
C语言是通过编译器与电脑进行交流。不用经过连接。
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言订定了一套完整的国际标准语法,称为ANSI C,作为C语言最初的标准。
5. 什么是“编译器”
编译信息在pe文件头中,pe告诉系统如何分配内存。
6. 不root怎么禁止后台自启和相互唤醒
在没有root成功的时候是不能设置的,只有root成功了以后从可以的。
电脑版本的应用宝是个稳定的手机root的软件,可以帮助你root成功的。
用手机的USB连接模式,把电脑和手机连接在一起。
识别以后在电脑上找到应用宝打开,右下角有个工具箱的功能。
在里面找到一键root的功能直接就可以root成功的。
7. 在虚拟机内安装了gcc编译器后,重新启动了本机。在打开虚拟机,安装的文件在次消失,就像安装了还原卡。
虚拟机问题,重装虚拟机,这是虚拟机没有保存数据,或者你创建安装系统的路径下不可写造成的
8. java中,如果你写了构造函数,则编译器就不会调用
印刷确实有问题,否则就是书的描述不全。
每个类都有一个默认的不带参数构造方法,如果自己没有定义任何构造函数,那么这个类实例化的时候就会调用这个默认的构造方法。
如果你自己写了一个构造方法,那么类在初始化的时候就不会去调用这个默认的方法了,因为它已经不存在了,如果你想自己写一个构造方法,又想保留原来的默认的构造方法,你就要把那个空参数的构造方法自己再写一遍。这样编译才不会报错。比如
public
class
A{
int
a;
public
A(){//默认
}
public
A(int
num){/自定义
a=num;
}
}
很简单的类A,第一个无参数的构造方法就是默认的构造方法,第二个带参数的方法是我们自己写的构造方法。如果你两个构造方法都没有,那么这个类A就相当于隐式的含有第一个构造方法。如果你只写了第二个构造方法,那么第一个就当作不存在了,如果这个时候你写下面的语句
A
a1=new
A();编译器肯定报错,因为这个类没有不带参数的构造方法,你只能写A
a1=new
A(5);使用自己的构造方法,在实例化A的对象的时候,同时让这个实例的成员变量a的初始值为5
如果我自己写了带参数的构造器,又想调用A
a1=new
A();那么就请显式的写上第一个构造方法吧,也就是说原来默认的构造方法,你就要自己写出来,不然编译器就找不到了。
希望我的回答能帮助你!
9. 搞不懂:如果C++在每个平台都有编译器,不就想JAVA一样成了跨平台的了吗
C++ 和 Java 这两种编译型语言都是跨平台的,只是它们跨平台的层次不同而已:
前者是源码层(Fortran 和 Pascal 也是),后者是可执行文件层。
也就是说,要移植的话,C++ 程序必须在目的平台上重新编译,Java 则只需把可执行文件拷到目的平台上去,不必在那里重新编译。
我说的 “可执行文件” 的定义是 “编译器的输出文件”(C++ 的是 .exe,Java 的是 .class)。
10. 为什么codeblock有了编译器仍然无法运行,设置都对,编译器也找到了(没有那个提示),就是编译不了
卸载当前版本
去官网下载一个自带编译器的版本
然后安装自带有编译器的版本
然后再尝试
如还有问题
留联系方式
可以远程协助