A. 提一个关于汇编和高级语言的问题
汇编是最接近机器语言的,能直接操作硬件,具有最高的效率,同一问题用汇编编程,所编译出的代码是最短小的,汇编的缺点是和人类语法相距甚远,不直观,没有结构化;而高级语言设计的目的就是要容易使用,因此语法接近人类语言,容易理解,采用结构化编程,虽然效率低,代码冗长,但是检查维护容易;现在也有中性语言,例如C,就兼顾了汇编和高级语言的优点,既要高效率,又要结构化。一般高级语言做编译的时候是先编译成汇编的,然后再次编译成机器语言,你学一下编译原理就明白了。
B. 求最短路径伪代码,用C语言或C++
java Native Interface(JNI)是Java语言的本地编程接口,是J2SDK的一部分。在java程序中,我们可以通过JNI实现一些用java语言不便实现的功能。通常有以下几种情况我们需要使用JNI来实现。 标准的java类库没有提供你的应用程序所需要的功能,通常这些功能是平台相关的 你希望使用一些已经有的类库或者应用程序,而他们并非用java语言编写的 程序的某些部分对速度要求比较苛刻,你选择用汇编或者c语言来实现并在java语言中调用他们 下面我们开始编写HelloWorld程序,由于涉及到要编写c/c++代码因此我们会在开发中使用Microsoft VC++工具。编写java代码,我们在硬盘上建立一个hello目录作为我们的工作目录,首先我们需要编写自己的java代码,在java代码中我们会声明native方法,代码非常简单。如下所示 class HelloWorld public static void main(String[] args) } 注意我们的displayHelloWorld()方法的声明,它有一个关键字native,表明这个方法使用java以外的语言实现。方法不包括实现,因为我们要用c/c++语言实现它。注意System.loadLibrary("hello")这句代码,它是在静态初始化块中定义的,系统用来装载hello共享库,这就是我们在后面生成的hello.dll(如果在其他的操作系统可能是其他的形式,比如hello.so) 编译java代码 javac HelloWorld.java 生成HelloWorld.class文件 创建.h文件 这一步中我们要使用javah命令生成.h文件,这个文件要在后面的c/c++代码中用到,我们运行 javah HelloWorld。这样我们可以看到在相同目录下生成了一个HelloWorld.h文件,文件内容如下 在此我们不对他进行太多的解释。 /* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class HelloWorld */ #ifndef _Included_HelloWorld #define _Included_HelloWorld #ifdef __cplusplus extern "C" #endif #endif 编写本地实现代码 在这部分我们要用C/C++语言实现java中定义的方法,我们在VC++中新建一个Project,然后创建一个HelloWorldImp.cpp文件,内容如下 #include <jni.h> #include "HelloWorld.h" #include <stdio.h> JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj) 注意我们这里include了 jni.h和刚才得到的HelloWorld.h文件。因此你要在VC++里面设置好,jni.h在JAVA_HOME/include里面。编译通过后再生成hello.dll文件。 运行java程序 把上面生成的hello.dll文件复制到我们的工作目录,这时候我们的目录中包括HelloWorld.java,HelloWorld.class和hello.dll文件。运行java HelloWorld命令,则可在控制台看到Hello world| 的输出了。运行VC++; 文件---新建---选“win32 console application”(控制台程序)---在右方设置好路径并输入工程名---确定 接下来的几个提示框点确定就行了,那是提示是否要用VC++提供的框架之类的 在左边的工作空间中选“FILEVIEW”标签项,点开“+”号,右键点击“SOURCE FILES”,选“添加文件到目录”,此即添加你要建立的C++源程序文件,会提示你没有文件,是否添加,你点是,输入文件名保存就OK了 然后SOURCE FILES下就出现了你刚才建立的*.CPP文件,双击,输入代码. 以下就是
C. 什么叫底层代码
底层代码是指被封装好的代码,底层代码写的就是比较原始,比较基础的代码。底层代码编写是非常接近机器的编程,使用底层开发语言(如C或汇编)。这与使用高级语言(例如Python,Java)的程序员进行编程不同。
对于java来说,底层代码一般是指框架的实现代码,这些代码一般都是一些常用代码或比较接近于原始的代码,这些代码封装好,可以方便复用和调用。而对一些操作系统来说,底层代码可能就是c或者汇编,写底层代码就是做底层开发。比如java的Map类,底层代码实现:
(3)评估模块的最短编译时间代码扩展阅读
编写底层代码一般要比较深厚的功底,对程序设计,代码涉及的各个方面,性能,耦合度,复用性都要很深的掌握和考虑,熟练掌握设计模式,良好的编程习惯,代码优雅,数据结构,精通各种算法。
很多java框架被淘汰,除了本身有致命的bug外,还有就是有性能更好,使用更方便的框架出现,而这些都是靠底层代码实现来决定的。
预留100G或以上空间用于存放源码及编译产出,本人编译的KitKat 源码(带.repo目录)+编译产出在80G左右
E. Keil uVision3 能编译多大的代码,我的程序总共700行,编译的时候却老是出错,非要删除一些才能编译 如下
一楼说的对,你的KEIL版本是评估板的,有2K可执行文件大小限制,现在KEIL的版本已经初到UV4了,你去官网下载一个,需要注册,不过是免费注册的,只是定期向你的注册邮箱发一些KEIL产品的最新动态之类的。再去网上下载一个KEIL的UV4注册机就可以破解2K限制了。
F. 执行 make moles时,编译需要很长时间,很多不需要编译的东西都被编译了。
http://www.linuxidc.com/Linux/2012-06/63092.htm
G. C语言模块的编译与连接过程
gcc a.c -o a.o -c
gcc b.c -o b.o -c
ld a.o b.o -lcrtdll -o ab.exe
编译就是把代码编译成中间格式(win32、coff、elf等),连接就是把中间格式的文件加上头组合成真正的可执行程序。编译的时候检查语法错误,连接的时候检查连接的库是否完整,是否所有导入符号都有实际定义等等。
H. java项目开发,一个简单的增删改查模块。预估工作量大概需要多长时间
简单的增删改查每个功能大概评估在500行代码总数就2000行,每人天70行的话。28天完成包括需求文档的写作,设计文档的写作,测试用例的编写及代码开发和单元测试、系统测试时间。