编译器选择乘法指令的规则
❶ 程序的指令是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,但对于编译器的设计有更高的要求。
❷ 单片机汇编语言问题
程序本来就是这样规定的啊 你还要解释什么呢
记住就好了 这是硬件电路决定的啊 分析不来的 其实在单片机里,每一条指令都只有一个专门的电路入口的,所以啊,我门只能按照它的规则来设计程序,而不能像MUL AR0,这样都是错误的啊。
高低位的决定也一样啊。
其实,两个字节相乘的话,它的乘积是不会超过两个字节的。
你说的FFH,不是还有个溢出吗。低字节满了向高字节进位啊。你还以为是列个乘法公式出来,一个一个这样对下去啊,你试把它的值十进制转成二进制,你就知道它能装多大的数了。两个8位相成填满16位,你想可以吗?肯定可以的。
❸ arm处理器乘法运算要几个时钟周期
要使用低成本的32位处理器,开发人员面临两种选择,基于Cortex-M3内核或者ARM7TDMI 内核的处理器。如何做出选择?选择标准又是什么?本文主要介绍了ARM Cortex-M3内核微控制器区别于ARM7的一些特点,帮助您快速选择。
1.ARM实现方法
ARM Cortex-M3是一种基于ARM7v 架构的最新ARM 嵌入式内核,它采用哈佛结构,使用分离的指令和数据总线(冯诺伊曼结构下,数据和指令共用一条总线)。从本质上来说,哈佛结构在物理上更为复杂,但是处理速度明显加快。根据摩尔定理,复杂性并不是一件非常重要的事,而吞吐量的增加却极具价值。
ARM 对Cortex-M3的定位是:向专业嵌入式市场提供低成本、低功耗的芯片。在成本和功耗方面,Cortex-M3具有相当好的性能,ARM 公司认为它特别适用于汽车和无线通信领域。和所有的ARM 内核一样,ARM公司将内该设计授权给各个制造商来开发具体的芯片。迄今为止,已经有多家芯片制造商开始生产基于Cortex-M3内核的微控制器。
ARM7TDMI(包括ARM7TDMIS)系列的ARM 内核也是面向同一类市场的。这类内核已经存在了十多年之久,并推动了ARM 成为处理器内核领域的主导者。众多的制造商出售基于ARM7系列的处理器以及其他配套的系统软件、开发和调试工具。在许多方面,ARM7TDMI 都可以称得上是嵌入式领域的实干家。
2.两者差异
除了使用哈佛结构,Cortex-M3还具有其它显着的优点:具有更小的基础内核,价格更低,速度更快。与内核集成在一起的是一些系统外设,如中断控制器、总线矩阵、调试功能模块,而这些外设通常都是由芯片制造商增加的。Cortex-M3还集成了睡眠模式和可选的完整的八区域存储器保护单元。它采用THUMB-2指令集,最大限度降低了汇编器使用率。
3.指令集
ARM7可以使用ARM 和Thumb 两种指令集,而Cortex-M3只支持最新的Thumb-2指令集。这样设计的优势在于:
●免去Thumb 和ARM 代码的互相切换,对于早期的处理器来说,这种状态切换会降低性能。
●Thumb-2指令集的设计是专门面向C 语言的,且包括If/Then 结构(预测接下来的四条语句的条件执行)、硬件除法以及本地位域操作。
●Thumb-2指令集允许用户在C 代码层面维护和修改应用程序,C 代码部分非常易于重用。
●Thumb-2指令集也包含了调用汇编代码的功能:Luminary 公司认为没有必要使用任何汇编语言。
●综合以上这些优势,新产品的开发将更易于实现,上市时间也大为缩短。
4.中断
Cortex-M3的另一个创新在于嵌套向量中断控制器NVIC(Nested Vector Interrupt Controller)。相对于ARM7使用的外部中断控制器,Cortex-M3内核中集成了中断控制器,芯片制造厂商可以对其进行配置,提供基本的32个物理中断,具有8层优先级,最高可达到240个物理中断和256个中断优先级。此类设计是确定的且具有低延迟性,特别适用于汽车应用。
NVIC 使用的是基于堆栈的异常模型。在处理中断时,将程序计数器,程序状态寄存器,链接寄存器和通用寄存器压入堆栈,中断处理完成后,在恢复这些寄存器。堆栈处理是由硬件完成的,无需用汇编语言创建中断服务程序的堆栈操作。中断嵌套是可以是实现的。中断可以改为使用比之前服务程序更高的优先级,而且可以在运行时改变优先级状态。
使用末尾连锁(tail-chaining)连续中断技术只需消耗三个时钟周期,相比于32个时钟周期的连续压、出堆栈,大大降低了延迟,提高了性能。
如果在更高优先级的中断到来之前,NVIC 已经压堆栈了,那就只需要获取一个新的向量地址,就可以为更高优先级的中断服务了。同样的,NVIC 不会用出堆栈的操作来服务新的中断。这种做法是完全确定的且具有低延迟性。
5.睡眠
Cortex-M3的电源管理方案通过NVIC 支持Sleep Now,Sleep on Exit,(退出最低优先级的ISR)和SLEEPDEEP modes 这三种睡眠模式。
为了产生定期的中断时间间隔,NVIC 还集成了系统节拍计时器,这个计时器也可以作为RTOS 和调度任务的心脏。这种做法与先前的ARM 架构的不同之处就在于不需要外部时钟。
6.存储器保护单元
存储器保护单元是一个可选组建。选用了这个选项,内存区域就可以与应用程序特定进程按照其他进程所定义的规则联系在一起。例如,一些内存可以完全被其他进程阻止,而另外一部分内存能对某些进程表现为只读。还可以禁止进程进入存储器区域。可靠性,特别是实时性因此得到重大改进。
7.调试
对Cortex-M3处理器系统进行调试和追踪是通过调试访问端口(Debug Access Port)来实现的。调试访问端口可以是一个2针的串行调试端口(Serial Wire Debug Port)或者串行JTAG 调试端口(Serial Wire JTAG Debug Port)。通过Flash片、断点单元、数据观察点、跟踪单元,以及可选的嵌入式跟踪宏单元(Embedded Trace Macrocell)和指令跟踪宏单元(Instrumentation Trace Macrocell)等一系列功能相结合,在内核部分就可以采用多种类型的调试方法及监控函数。例如,可以设置断点、观察点、定义缺省条件或执行调试请求、监控停止操作或继续操作。所有的这些功能在ARM 架构的产品中已经实现,只是Cortex-M3将这些功能整合起来,方便开发人员使用。
8.应用范围
虽然ARM7内核并没有像Cortex 系列那样集成很多外设,但是大量的基于ARM7的器件,从通用MCU,到
面向应用的MCU、SOC 甚至是Actel 公司基于ARM7内核的FPGA,都拥有更为众多的外围设备。大约有150种MCU 是基于ARM7内核的(根据不同的统计方法,这个数字可能会更高)。
你会发现ARM7都可以实现几乎所有的嵌入式应用,或采用定制的方式来满足需求。基于标准内核,芯片厂商可以加入不同类型、大小的存储器和其他外围设备,比如串行接口、总线控制器、存储器控制器和图形单元,并针对工业、汽车或者其他要求苛刻的领域,使用不同的芯片封装,提供不同温度范围的芯片版本。芯片厂商也可能绑定特定的软件,比如TCP/IP 协议栈或面向特定应用的软件。
例如,STMicroelectronics 公司的STR7产品线有三个主要系列共45个成员,具有不同的封装和存储器。每一个系列都针对特定的应用领域,具有不同外设集合。比如STR730家族是专为工业和汽车应用设计的,因此具有可扩展的温度范围,包括多个I/O 口和3个CAN 总线接口。STR710则是面向于消费市场以及高端的工业应用,它具有多个通信接口,比如USB、CAN、ISO7816以及4个UART,还有大容量的存储器和一个外部存储器接口。
芯片厂商也可以选择利于开发人员开发产品的措施,比如采用ARM 的嵌入式跟踪宏单元ETM(Embedded
Trace Macrocell),并提供开发和调试工具。Luminary、STMicroelectronics 这两家公司已经有基于Cortex-M3的芯片,其他公司如NXP、Atmel 也宣布生产该类产品。
9.配套工具
ARM7应用已经非常普及,它已经有非常多第三方的开发和调试工具支持。在ARM 的网站上有超过130家工具公司名称列表。
大多数厂商提供了基本的开发板,并提供下载程序的接口、调试工具以及外部设备的驱动,包括LED 灯的显示状态或者屏幕上的单行显示。通常,开发套件包括编译器、一些调试软件以及开发板。更为高级的套件包括第三方的集成开发环境(IDE),IDE 中包含编译器、链接器、调试器、编辑器和其他工具,也可能包括仿真硬件,比如说JTAG 仿真器。内电路仿真器(ICE)是最早的也是最有用的调试工具形式之一,很多厂商都在ARM7上提供了这一接口。
软件开发工具范围很广:从建模到可视化设计,到编译器。现在很多的产品也用到实时操作系统(RTOS)和中间件,以加速开发进程、降低开发难度。另外,还有一个非常重要的因素,很多的开发人员对ARM7的开发经验非常丰富。
虽然现在已经有新兴的Cortex-M3工具,但显然还是有一定的差距。不过,Cortex-M3的集成调试性能使调试变得简单且有效,且无需用到内电路仿真器ICE。
10.决策
那么,你应该如何做出何种选择呢?如果成本是最主要考虑因素,您应该选择Cortex-M3;如果在低成本的情况下寻求更好的性能和改进功耗,您最好考虑选用Cortex-M3;特别是如果你的应用是汽车和无线领域,最好也采用Cortex-M3,这正是Coretex-M3的主要定位市场。由于Cortex-M3内核中的多种集成元素以及采用Thumb-2指令集,其开发和调试比ARM7TDMI 要简单快捷。
然而,由于重定义ARM7TDMI 的应用不是一件困难的事,特别是在使用了RTOS 的情况下。保守者可能会沿用ARM7TDMI 内核的芯片,并避免使用那些会使重定义变得复杂的功能。
IAR Systems 公司是最早做C 编译器的厂商,提供一系列ARM 开发工具,包括IAR visualSTATE 建模工具、IAR Embedded Workbench for ARM 集成开发环境、IAR PowerPac 实时操作系统和中间件、J-Link 硬件仿真工具以及开发套件。不管用户的选择是ARM7还是Cortex-M3,IAR 都会让开发变得简单而有趣。
❹ 简单指令集和复杂指令集的区别
RISC(精简指令集计算机)和CISC(复杂指令集计算机)是当前CPU的两种架构。它们的区别在于不同的CPU设计理念和方法。
CPU架构是厂商给属于同一系列的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,但对于编译器的设计有更高的要求。
复杂指令集计算机(CISC)
长期来,计算机性能的提高往往是通过增加硬件的复杂性来获得.随着集成电路技术.特别是VLSI(超大规模集成电路)技术的迅速发展,为了软件编程方便和提高程序的运行速度,硬件工程师采用的办法是不断增加可实现复杂功能的指令和多种灵活的编址方式.甚至某些指令可支持高级语言语句归类后的复杂操作.至使硬件越来越复杂,造价也相应提高.为实现复杂操作,微处理器除向程序员提供类似各种寄存器和机器指令功能外.还通过存于只读存贮器(ROM)中的微程序来实现其极强的功能 ,傲处理在分析每一条指令之后执行一系列初级指令运算来完成所需的功能,这种设计的型式被称为复杂指令集计算机(Complex Instruction Set Computer-CISC)结构.一般CISC计算机所含的指令数目至少300条以上,有的甚至超过500条.
精简指令集计算机(RISC)
采用复杂指令系统的计算机有着较强的处理高级语言的能力.这对提高计算机的性能是有益的.当计算机的设计沿着这条道路发展时.有些人没有随波逐流.他们回过头去看一看过去走过的道路,开始怀疑这种传统的做法:IBM公司没在纽约Yorktown的JhomasI.Wason研究中心于1975年组织力量研究指令系统的合理性问题.因为当时已感到,日趋庞杂的指令系统不但不易实现.而且还可能降低系统性能.1979年以帕特逊教授为首的一批科学家也开始在美国加册大学伯克莱分校开展这一研究.结果表明,CISC存在许多缺点.首先.在这种计算机中.各种指令的使用率相差悬殊:一个典型程序的运算过程所使用的80%指令.只占一个处理器指令系统的20%.事实上最频繁使用的指令是取、存和加这些最简单的指令.这样-来,长期致力于复杂指令系统的设计,实际上是在设计一种难得在实践中用得上的指令系统的处理器.同时.复杂的指令系统必然带来结构的复杂性.这不但增加了设计的时间与成本还容易造成设计失误.此外.尽管VLSI技术现在已达到很高的水平,但也很难把CISC的全部硬件做在一个芯片上,这也妨碍单片计算机的发展.在CISC中,许多复杂指令需要极复杂的操作,这类指令多数是某种高级语言的直接翻版,因而通用性差.由于采用二级的微码执行方式,它也降低那些被频繁调用的简单指令系统的运行速度.因而.针对CISC的这些弊病.帕特逊等人提出了精简指令的设想即指令系统应当只包含那些使用频率很高的少量指令.并提供一些必要的指令以支持操作系统和高级语言.按照这个原则发展而成的计算机被称为精简指令集计算机(Reced Instruction Set Computer-RISC)结构.简称RISC.
CISC与RISC的区别
我们经常谈论有关"PC"与"Macintosh"的话题,但是又有多少人知道以Intel公司X86为核心的PC系列正是基于CISC体系结构,而 Apple公司的Macintosh则是基于RISC体系结构,CISC与RISC到底有何区别?
从硬件角度来看CISC处理的是不等长指令集,它必须对不等长指令进行分割,因此在执行单一指令的时候需要进行较多的处理工作。而RISC执行的是等长精简指令集,CPU在执行指令的时候速度较快且性能稳定。因此在并行处理方面RISC明显优于CISC,RISC可同时执行多条指令,它可将一条指令分割成若干个进程或线程,交由多个处理器同时执行。由于RISC执行的是精简指令集,所以它的制造工艺简单且成本低廉。
从软件角度来看,CISC运行的则是我们所熟识的DOS、Windows操作系统。而且它拥有大量的应用程序。因为全世界有65%以上的软件厂商都理为基于CISC体系结构的PC及其兼容机服务的,象赫赫有名的Microsoft就是其中的一家。而RISC在此方面却显得有些势单力薄。虽然在RISC上也可运行DOS、Windows,但是需要一个翻译过程,所以运行速度要慢许多。
目前CISC与RISC正在逐步走向融合,Pentium Pro、Nx586、K5就是一个最明显的例子,它们的内核都是基于RISC体系结构的。他们接受CISC指令后将其分解分类成RISC指令以便在遇一时间内能够执行多条指令。由此可见,下一代的CPU将融合CISC与RISC两种技术,从软件与硬件方面看二者会取长补短。
复杂指令集CPU内部为将较复杂的指令译码,也就是指令较长,分成几个微指令去执行,正是如此开发程序比较容易(指令多的缘故),但是由于指令复杂,执行工作效率较差,处理数据速度较慢,PC 中 Pentium的结构都为CISC CPU。
RISC是精简指令集CPU,指令位数较短,内部还有快速处理指令的电路,使得指令的译码与数据的处理较快,所以执行效率比CISC高,不过,必须经过编译程序的处理,才能发挥它的效率,我所知道的IBM的 Power PC为RISC CPU的结构,CISCO 的CPU也是RISC的结构。
咱们经常见到的PC中的CPU,Pentium-Pro(P6)、Pentium-II,Cyrix的M1、M2、AMD的K5、K6实际上是改进了的CISC,也可以说是结合了CISC和RISC的部分优点。
RISC与CISC的主要特征对比
比较内容 CISC RISC
指令系统 复杂,庞大 简单,精简
指令数目 一般大于200 一般小于100
指令格式 一般大于4 一般小于4
寻址方式 一般大于4 一般小于4
指令字长 不固定 等长
可访存指令 不加限制 只有LOAD/STORE指令
各种指令使用频率 相差很大 相差不大
各种指令执行时间 相差很大 绝大多数在一个周期内完成
优化编译实现 很难 较容易
程序源代码长度 较短 较长
控制器实现方式 绝大多数为微程序控制 绝大多数为硬布线控制
软件系统开发时间 较短 较长
❺ 希望大家可以一块学习c/c++。。。。
我的建议是,学习语言不能太急功近利。以下是一个电脑专家,增长了深厚的感情,我看你。 <br /> ==============这些天我一直在写一个实时操作系统内核,有小变============== ============= <br />等全部完成,我会打开,并希望能够为国内IT的发展尽自己的微薄之力。最近看到很多学生朋友和相同的方向,这样一来彼此鼓励我的经验写出来,希望能给朋友刚入行的一点点帮助。 <br /> <br />在IT行业超过7年的学习和工作的闪光,在这期间我做了网络写MIS,数据库,应用程序,工作,通信软件,硬件驱动,协议栈,到现在做的操作系统内核和IC开发,中间走了很多弯路,也吃了很多苦。 <br /> <br />我是一个三流大学,连同一个城市的人多数都不知道。因为学校的不好,有没有想到成名的学校,找到一份好工作。所有的希望都寄托在自己的努力,大一学校在假期前,我就开始学习,我还记得第一本书我买了电脑的基本DOS3.0不是吓唬,其实,已经是普遍的DOS6.22,只是我在书店里DOS4 0.0,5.0,6.0的书,以为像英语一样,第四,第五,六,记得找DOS1.0现在,我认为这是幸运,我没有找到:)我学完了PASCAL在学期开始前,然后既没有电脑,没有人可以问,我连接的程序的概念是什么只好死记硬背代码,然后拿纸写,我一直到大三有486本文之前写一个程序,我可以不记得了,只知道最长的一个我拿草稿纸写了30多页的A4尺寸,C语言,C + +,VC都是在这样的条件下进入。这样的条件可以克服的,我希望我的经历多少的学生的信心苛刻的条件。第一次上机是在我姐夫的机房,我感到兴奋无法比拟的,但是一上机我立刻傻了眼英文版本in3.1,我的DOS知识点是鬼,机器紧张一阵大惊小怪,不小心造成的话全屏,怎么不是原始的,它是真急了,我以为机器出了。 C语言程序,就是经典的HelloWorld,我调了几个星期,机会非常少的机器,有没有书告诉我开发环境(TC2.0)需要设置,而且开始我不知道编译器我什至尝试是聪明的书面程序的分机。 C变化。 exe文件,其结果可想而知。大一学生完成学校C X86汇编的数据结构,C + +。的精力都花在自学的大型四门课程挂了彩,三类学校是一个很好的点,挂一20还照样毕业。但拉远点我这么努力都失败了,可以看出刚性计算机教育在我国。 <br /> <br />大二学生准备学VC和BC很难选择,后当选VC,不为别的,只两本书的书店,VC便宜6美元。我的努力,没有人在课堂上和学校的白天和黑夜,尤其是初级的电脑很多次父亲半夜教训我说我不想要的生活,我一直认为他们的基础设施较差,回忆没有条件不是很好,所以我觉得只花更多的时间来赶上其他。其实后来,我的很多朋友说我是一个学校的计算机的天赋,让我哭笑不得。我486,16 M内存,1G硬盘同学配置是P166MMX的,我安装一个indowsNT4.0的需要一个通宵,编译一个BC5.0向导程序所产生的需要近两个小时,我的显示器使用,并辐射是非常大的开机画面火花看起来很酷的:),一旦程序太长,觉得怎么白色的编辑器背景变成紫色,显示眼睛不好,不仅发现较晚,但说奇怪,我的眼光,但也保持了1.5确实是一个奇迹。但它是伴随着破碎机是我两年,我学会了VC,DELPHI,SQLSERVER。后来那台机器给我阿姨打字后,根据她的一天,她玩的开心波的烟雾夹着消防演习显示,它是走到了尽头。 <br /> <br />大三假期找机会在一个计算机研究所实习实习了这么多,因为它是一个志愿者,做了两个月,没拿一分钱。但过去两个月来帮助我发展,让我退后一步了解了社会,刚去,当然,我什么都不知道在那里我很熟悉??网络,并学习到Delphi和Oracle。更好的评价工作十分重视,在转介的老人,我开始做项目,这使得他们的收入在三大四季皆宜找到两个主场的MIS公司兼职,虽然多少钱,但在1000多的收入学生我已经很满足了,我终于用自己的钱一台电脑。大四开始找工作的,然后我的工作经验(当然,现在,我觉得很幼稚),开始听父母希望去实习的那个部门也希望我能去研究所,但不知道为什么最后什么都没有,这个单位是一个比较的官僚,我一气之下向我兼职的一个公司做MIS的TeamLeader。初中毕业一年,做了MIS,天然气,烟草,公安,铁路,饮食上大学,什么样的钱,工作很辛苦,经常加班和熬通宵,从与客户的设计要求,编码,测试,交付必须打开。我觉得很有成就感,感觉还不错,现在,我认为这实在是肤浅的。 <br /> <br />刚走上工作的学生很容易被误导,各种开发工具让人眼花缭乱气馁,觉得很受欢迎的公司,但是这始终是一个较低的发展水平。不要告诉我什么是多么的重要,有多少是很难系统的分析。你觉得他们跟用户需要设计系统的分析和设计,国内也有几家公司能够做到这一点很规范的地方呢?我在Rational获得ISO9000内审员几次培训,花了四个证书,还有一个公司让我去做CMM。我听说了很多,但事情到了国内大量的改变了性质,一个公司不是通过了ISO9000或CMM将能够标准化,我现在是在数十年之久的外国公司工作,管理不一般的国内企业。未通过门廊早,社会的研究生,在很短的时间内几乎是不可能的,掌握了系统的分析和设计,面向对象,UML只是一个工具,关键是人的思想是不是说你熟悉C + +,罗斯将是能够做出好的设计,相反的,如果你有一个高品质的,你可以写在C比别人用C + +程序更加模块化。 <br /> <br />说,目前,国内软件开发行业有一个恶性循环,很多人觉得VC> Delphi的> VB真的是很有趣的。他们说,我做了几个>软件开发工具的选择应根据应用程序的需要,而不是感觉一个更高的水平。如果您选择与开发工具很有面子,只能说明你很浅。如果水平,这些工具都不到一个更高的水平,因为它们被用??来花的,是一些系统的API,微软的朋友不会因为你记住他们的API的类的数量会认为你是伟大的,你永远只是他们的客户,他们看重的是在你的口袋里的钱。我一直在系统内核,我也封装了许多的API,同样我也不会使用这些API做二次开发,除非他能够使自己独特的设计价值的客户。 <br /> <br />有些人认为C + +> C,它让人开怀大笑,你可能要问,现在有几个操作系统内核是写在C + +中,有一些真实系统使用的C + +,当然,我不是说C + +不好,但是目前的内核和实时系统在C + +还无法与C比赛,至于说C + +做应用程序开发的又是另一回事。所以,我的问题不在于你用什么工具和语言,而在于你有什么打算工作。你的设计体现了你的技术水平。 <br />一遍,我觉得很压抑,所有技术行业最生活个人技术上没有太多的提高也看不到方向。所以,我决定离开这个城市去上海,寻求更好的发展,并且打算放弃我不得不去通信行业的管理信息系统。 <br /> <br /> <br />写到这里不能不提到我女朋友,我们是来上海在上半年的意识,她的前辈在我们公司实习,公司派她给我写的文档中,我们的情绪发展很快。她告诉我很多事情,她家是改革开放的第一批暴发户,她母亲爱打牌,输了几万元,还欠了很多债,她有男朋友,但她有没有对他的感情,只因为他给了两万块钱,她的母亲,后来又强迫她到四万IOU她的男友背叛了她,打她不止一次,被迫嫁给她,或者告诉她还钱。这个人其实是一个大学老师!她的母亲的父亲,她的学费花了,因为拖欠学费她没有办法拿到毕业证书。她的母亲病了需要钱,我拿出自己的积蓄,并挑选了一些时间与他们的朋友,以支付她的学费钱消失了(后来才知道,医生和医生给了她的母亲,即使她的母亲是不生病了,我不知道,但她没有办法)。这一次,我知道有些事情对我牢固地结合在一起,而且她还试图破坏她的前男友。无奈之下,我们决定必须早点离开这个伤心的城市,我们的家不知情的情况下。由于时间所限,我只打算到4000美元,她只有几百块钱去她的母亲,我买了三张票,一个中午,中午两个晚上我的家人,我的船,他们走了,我下车船,我和她乘坐夜船离开这个城市和她生活了很多年,,只是拿走债务。没有来过上海,两地的我们固执,都不愿意去麻烦同学和朋友。来到上海,在傍晚6点半,我们不知道哪里去了,炎热的七月天气,我们必须找到一张20美元的酒店,这个房间有窗户,房间里非常闷热。在未来一天我们开始租一间公寓,因为在身体多钱,我们都基本上走,花了一个星期的时间,不知如何多圈在浦东转找到400的房子,但我们也并不了解上海支付三重压力,但也到支付的代理费的一半,购买一些锅和平底锅,只有800美元,工作已不被提供,以支持在800美元,以获得我们的第一个月工资,为了省钱我们自己做饭每天只花了2块钱买吃的,她非常喜欢吃(可能在大学里,她经常挨饿的愿意),看到她省吃俭用我真的没有心。她的前男友并没有离开她一个人,通常被称为骚扰,看到她,并说了很多恐吓她,她说,他是太不厚道了,毕竟,帮助她,他告诉我,不要弯腰。经过一整天在家里等待面试,我本来想快速找到MIS眼前的困难,但是她坚持让我不要放弃自己的理想,终于功夫不负有心人,我找到了一家通信公司,4000工资与MIS给我开出的价格,但也够在上海生存。她也找到了工作,第一天的工作,她哭了,这是她第一次流泪,我心里很难受,也很感动。 <br /> <br />新的行业,自己到零,VC,Delphi中,我学到了数据库没有用的,是嵌入式的,放在我的面前,我没有接触过的知识的信号协议。我知道我不撤退,这么难学,我自己作为一名应届毕业生,作为努力获得过去6个月,我终于熟悉的工作,和公司的认可的工资加上一个。后来的日子里,我们省吃俭用,朋友还欠超过一万美元,这一天终于在正确的轨道上。女友告诉我,她的愿望就毕业了,我也很支持,她辞掉了工作,提高备考。 <br /> <br />另外,在这里我要感谢我的ProjectManager,他竟然是一个大通信公司的产品经理,和人民非常善良,我从他身上学到了很多东西,和他给了我很多无私的帮助。他给了我工作的充分的空间和信任。记得公司安排维修接入服务器软件,信息和文件不完成的代码量是不是太小(5万行),我仍然是非常困难的,所以我想重新做一遍,公司领导层不支持,可能觉得工作量太大,但是他极力支持我私下认为,他让我做的维护工作他挤时间做。我花了6个月,在他的支持,完成的接入服务器>软件,和一个相对完整的TCP / IP协议栈。在这里,我学会了嵌入式系统设计驱动的开发,知识的TCP / IP,以及大量的通信,我花了一年时间,最后转移到通信行业,从MIS开发中,并站稳了脚跟。我公司开发了大量的硬件的直接操作,不再在微软的操作系统,VC,DELHPI这些开发工具的约束,我终于看到了另外一片天空。 <br /> <br />我做的事情就像生根随着软件开发和硬件的发展,深化底部的联系越来越紧密,硬件知识的缺乏和发展的障碍,而且芯片技术基本上掌握在外资手中公司开出的限制,系统级设计是一个非常大的,一个新产品的第一个(通常是最赚钱的),通常是IC的公司,如英特尔,摩托罗拉赚的利润,国内厂商只能喝点汤。所以我决心解决自己的硬件技术障碍,并打算离开通信行业,进入IC设计相关领域。 <br />当然,我明白,如果我了解的很少,硬件的IC公司会仁慈的欺骗我什么都不知道,一个人训练。所以,我必须工作打下了坚实的基础,学习一些知识,为将来做好准备。我已经看到了很多的通信方面的书,就像我开始从MIS的通信,和一个ISP的RADIUS计费分拣完成,在这种情况下,该通信公司给了我这个机会。通信公司,我做系统设计,有很多PCBLayout的硬件人员,不管怎样,我注意向他们学习,因为我做软件,该公司的硬件资料不好意思,所以开始在家里看刚刚在上海工作了一年加班,后来没有,因为我要挤出时间学习,我平时12:00和5:30左右睡觉,第二天,我去工作前,在地铁上,如果没有很多人,我也用读的书。学习当然不会是容易的,有些真的做不明白的问题积累问硬件人员,他们帮助我学习进度快很多,,因为没有人教练自学,一半我的时间是花在解决困难的问题,但往往别人的的话让我豁然开朗,我很高兴我有这样的学习环境。在后面的一年,我学会了看硬件原理图,学会了简单的硬件设计(模拟电路,有不小的差距),这样的事情,当你做>软件,安安份份人永远是你>软件开发人员,你开始学习硬件,其他人可能不同意,中兴通讯的朋友还告诉我,一个人不能把一切都完成。我也明白,但我希望他们做的更好。但当你熟悉硬件,大家会觉得你似乎了解,原来是硬件和软件,和同事们习惯。我的硬件信息可以站起来,让公司看到没人大惊小怪。我更加自豪的是,我通过自己的努力IAD(软交换的终端设备)系统解决方案,包括硬件和软件的选型,设计,内容,这个方案已经本公司及同事的认可,使我感到非常高兴。 <br /> <br />技术是相辅相成的,我的硬件已经取得了一些进展,I>软件设计有了很大的提高,我可以更深入地了解这些问题,我做的接入服务器CPU是MotorolaPowerPC860,熟悉的朋友知道860QMC>软件通常批量数据传输BD表硬件人员做驱动的习惯,固定BD表,每接收或发送数据,将数据从BD表时,了解深入到用户缓冲区,或从用户缓冲区考</托尼BD表,我要重新实现这个过程,采用动态BD表,驱动器接收数据从一个网络接口,提交给我>软件层交换,直至从另外的接口发送,无可复制。这样的设计大大提高了系统的性能指标接近理论值。结合了硬件和软件设计到一个新的水平。我现在写的操作系统,编译程序反编译成汇编,找出其中不优化的代码,然后调整C程序。例如,大量的CPU专门的乘法指令,我们应该知道一个乘??法操作常常花费大量的指令周期,其中的CPU,有些朋友会说这个我知道,我会尽量避免采用×号,但是事情往往没有这么简单,你知道C语言中数组的下标操作是如何实现这一目标?仔细看看反汇编的代码你就会明白,同样的标定位操作,C编译器有时会产生位移指令,但有时候乘法,两者效率往往是不同的,所以我能理解这些问题,以提高系统的性能极致。这些问题不说,有兴趣在未来可以探索。 <br />说远一点,我真诚地希望>软件做更多的深入的朋友有机会学习硬件,以及其他相关的知识,特别是底部的开发和嵌入式设计。 >软件技术,以提高非常大的帮助,还是有很多的事情,你只知道,但不明白为什么这样。我的看法已经,在IC公司ProjectManager验证的。他告诉记者,该公司现在的802.11芯片产品的软件经理原本做硬件设计的芯片,有一定的原来做软件,现在在做IC,类似的例子很多,只是让国内的气氛不是很受欢迎。 <br /> <br />我有一些经验与大家分享,当我做了很好的工作,我将学习与工作的关系,是不是技术,让老板,如果他们不进攻,在入门阶段这个问题,我通常不会去那些谁是退伍军人,而是问一些资历比较浅的朋友,比如刚毕业的学生,??因为他们往往??会告诉你详细的解释,而资深人士通常觉得你的问题太简单了,所以答案也很简单,我不好意思问。因此,在技术上有一定的水平,我会问他们,他们可以给你一个更深入的回答。另外,有些朋友说我更好的机会,他们也希望能从事遗憾的是,没有新的工作,我听了只有苦笑,我的机会了解的人应该知道,我没有出生在什么家庭:)也没有一个提拔我所有的方式,所有的走出来的,我母亲去世比较早,我的后母(我叫她阿姨)看着我的努力,随着时间的推移,她看我大年30还在写程序,她说像我的硬盘木材可以学习。 <br /> <br />我的最终目的是IC而不是PCB,所以我下一步的准备开始学习IC设计的知识。同工不明白的IC设计,回来的路上我自己的,我买了很多相关的调查,网上很多资料的书,我花了很多时间去学习VHDL,并且用软件简单(没有设计ASIC设计和仿真,只为FPGA),随着学习的深入,我渐渐明白了IC设计的基本流程,而且要了解的艰辛之路。这一次,我已经做好了准备退出这个行业有一定的知名IC设计公司投简历,并经历了漫长的面试(4小时)。其他都比较满意,与异常的薪水过得去,我明白了为什么,因为我是新的行业,我没有经验,我再次清除。公司老板问我6000多一个月能不能接受,我知道他也掌管。想想我通信行业的朋友,基本上都是年薪10万以上,月薪过万的比比皆是,朋友向我介绍了很多很好的治疗公司,我该怎么选择,我很犹豫,我热爱我的职业生涯中,我我向往我的追求,但我也是一个普通的人,我也需要养家糊口,我想提前买了车。生活给我的问题。 <br /> <br />爱因斯坦63岁说,“一个人在30岁前在科学最伟大的成就没有达到,他将永远不会有。”这让我的压力很大,振动,我将26岁,从30,只有4年,我一定要抓住这几年宝贵的时间,努力达到我的技术高峰。订购离自己的梦想更接近这个理想,我选择了这个IC公司,我明白自己的工资和公司刚进入研究生几乎是相同的,但为今后的发展只能忍受,一切又得重新开始。对于行业是一个非常痛苦的过程,尤其从一个春风得意的位置变化到一个不熟悉的位置,跳进冰水中,感觉象从温暖的被子里钻出来不可接受的。原通信公司只有两年至5倍工资的员工,公司和同事们给了我很大的肯定,工作往往是委以重任。但现在这一切都成了过去,在新的公司我只是一个新人,没有人知道,没有人在意我过去的成绩。我决定重新开始,我把自己看作新毕业的学生,??我想用自己的努力获得认可的公司。进入新的行业是非常痛苦的,我告诉自己必须忍受着这一切,虽然很多诱惑摆在那里,已经做出了选择,我不会让自己轻易放弃。 <br /> <br />我已经在这家新公司在超过一个月的班,开始慢慢适应一个非常困难的。结束的第一个月,TeamLeader找我说话,说我是最优秀的员工,我感到非常高兴,这也算是我的一个积极的努力。还要感谢我的女朋友,她给了我很多的支持和鼓励,每次我动摇时,她鼓励我,让我坚持自己的理想,她第一次来到上海,我不勉强做MIS,这是她的我顶住了月薪过万的诱惑,没有她我可能不会有今天的成绩。 <br /> <br />公司拥有自己的操作系统,自己的CPU,DSP和其它芯片,在这里我能够学习最先进的技术在世界上,我们的设计开发不再完全依赖别人的硬件和系统,这让我很高兴。我打算在正确的轨道,努力学习新知识,实现我的理想。 <br /> <br />我给自己定下一些目标在后面两年:<br /> <br />。努力做好自己的工作,工作得到公司和同事的身份; <br />努力学习IC硬件设计知识,多向同事提供意见,并充分利用每一个机会来实践和更多; <br /> 。实现我的实时操作系统的主要部分,完成TCP / IP协议栈模块,并免费发布源代码;:<br /> IV。结婚并买一套小房子,和我的女朋友,这是最重要的,因为据我了解,可重复的原因,但是珍贵的感情很难恢复了。 <br /> <br /> <br />这里要提一下,我公司开发的操作系统,它是一个实时嵌入式系统,目前支持以下功能:<br /> <br />一个循环支持调度和基于优先级调度,最多为64个优先级; <br /> B。抢占式实时内核; <br />?,便携性,主要通过使用标准C; <br />e非常小的汇编代码,不到100行;实现<br /> e支持任务管理,各任务有独立的堆栈; <br /> F。进程同步和通信目前正在调试的信号量的MessageQueue <br />克。定时系统调用; <br /> h的车窗上仿真调试<br />我还打算到下一个优先级反转保护EventFlag,数据管道,内存管理(原)驱动器接口。在此之后,我将努力对其进行改进,如添加一个文件系统,协议栈,调试接口。我希望我的朋友们提出了自己的意见和建议,明白这一点! <br /> <br />后记:<br />像有些朋友说,我的经验可能会误导我的一些朋友,在这里我要解释一下。我以前学习过于拼命,往往超过3个小时睡了一晚,我身高1米71,只有108斤(我现在130多),家人,我拼命地生活,但60岁的,但当时我太固执,我告诉他们实现理想的生活,50岁,我受够??了。时拼命使我的身体受到影响,有一次早上突然腰肌剧痛难忍的痛苦,在床上,我会受不了。虽然我现在更加重视,但有时疼痛。后来在女朋友说服了我,我不再是上海的情况。我经常引用他父亲的话,“身体是革命的资本”。 <br /> <br />而我也发现拼命不是问题的答案,我可以多熬12过夜,大部分的时候,我连续工作了三天三夜,但两个星期都没有恢复,所以这不是得不偿失?学习和工作应该是一个长期的过程,就像一场马拉松,不是100冲刺。我真的要注意调整学习和工作的强度,我要尽可能保证每天与相对充沛的精力,一些年轻的朋友们感到绝望的努力,这让我有些担心,如果我的故事可以让你学习工作是多一点的兴趣,我很高兴,但如果误导了一些朋友,所以你不值得付出,我会??感到很内疚。 <br /> <br />技术不高或低之分,只有我的行业,因为由于他们的利益,而不是什么偏见,行业。我希望我的经验给朋友不会引导错误,我觉得我始终向更高的技术发展。事实上,社会各界的顶做是非常困难的。再说,虽然技术不高或低,但阈值水平,在任何情况下,比IC门槛高的页面,这是无可否认的。国家各种人才都需要,但作为个人的想法应该力求更好地做自己喜欢的行业,不应该停留在比较浅的层面。 <br />我觉得更多的自我认识,也许是我最大的优点是知道有很多缺点:)。我的故事,很多的曲折和错误都是由我的缺点,我希望你看在我的经验,谨慎的眼睛,不要被我的“花言巧语”所迷惑。我学习有些随心所欲,这给我带来了无尽的烦恼,但也极大地阻碍了我的发展。我记得我年轻的时候比较好的效果,但是后来学习严重偏科,导致我的高中成绩一再滑坡,也没有考上好学校,一个儿时的朋友,类似的结果的时候,和我,但不是我的的缺点,她上清华,后来在去美国深造,在着名的导师男人理论科学,这可能是一个更好的出路。其他的学习方法继续改善,在过去的学习是重视的数量和时间,学习是痛苦的。低效的,我现在密切关注效率的学习和技能,这是快捷方式学习(当然,不是指投机取巧),例如,要学会一个相对陌生的技术,如果有条件的话,不妨问有经验的人,并不需要问了很多,他常常不经意地几句话会给你非常大的帮助,甚至比你看到这本书的一周。带着这个想法,去学习,你将节省大量的时间,那么为什么不呢?多年来,我学到了很多的东西,由于开始非常盲目的,随意的回顾学到了一些东西,现在让我知道是该笑还是该哭,我浪费了很多时间,也没有必要深入了解的知识,毕竟一个人的精力是有限的。很多朋友非常喜欢我背五笔字形,这的确是一个好的输入法,但R&D人员来说,绝对是不值得你回去,你的时间应该花在有价值的。我喜欢的东西也做了很多,我背过CCED WPS的命令和快捷键的dBase基本退出了历史的舞台,我也花了很多时间去学习它。所以我的学习在早期缺乏规划,没有明确的目的的短??期,中期目标,只有一个模糊的和长远的眼光。这就像做设计,好的设计是抽象的过程,从需求编写了很多,需求不能立刻开始开始编码。