Welcome 微信登录

首页 / 软件开发 / 汇编语言

C语言内嵌汇编实现字符串拷贝函数strcpy()

C语言内嵌汇编实现字符串拷贝函数strcpy()

C语言内嵌汇编实现字符串拷贝函数strcpy()2013-05-28这段时间一直在做ARM体系结构下的汇编程序设计,有些心得,在这记录一下,记得在之前学习汇编的时候,都是感觉枯燥,没有意思,写程序也只是写一些简单的功能,这篇文章侧重讲解一下利用C语言内嵌汇编实现对字符串的拷贝函数strcpy()。static inline char *__kernel_strcpy(char *dest, const char *src) char *xdest = de...
计算机系统原理(一) 计算机概述

计算机系统原理(一) 计算机概述

计算机系统原理(一) 计算机概述2014-08-22本来LZ是打算好好研究一下JVM源码的,不过想来想去,LZ觉得应该先了解计算机系统的原理,再去研究JVM源码的精妙。因此LZ决定潜下心来好好研究下计算机系统原理,这是一个漫长的过程,因为《深入理解计算机系统》这本书很厚,而且这种书一般看起来速度不会太快。因此LZ打算做好每一个阶段的记录,有兴趣的猿友可以跟着LZ一起看下,了解计算机系统的运行原理其实是很有必要的。计算机的组成计算机是由硬件和软件组成的,这两...
计算机系统原理(二) hello world程序的运行原理图解

计算机系统原理(二) hello world程序的运行原理图解

计算机系统原理(二) hello world程序的运行原理图解2014-08-22在写本章的内容之前,LZ先做个小广告。其实也不算是什么广告,就是LZ为了和各位猿友交流方便,另外也确实有个别猿友留言或者在博客里发短消息给LZ要联系方式。因此LZ斗胆建立了一个有关《深入理解计算机系统》这本书的交流群,当然了,如果有哪位猿友有其它方面的问题,也可以在群里提出,如果LZ有能力帮忙的话会尽量帮助各位,倘若LZ能力不足,或许也会有其它猿友可以解答。群号在文章里就不贴...
计算机系统原理(三) 金字塔形的存储设备、操作系统的抽象概念

计算机系统原理(三) 金字塔形的存储设备、操作系统的抽象概念

计算机系统原理(三) 金字塔形的存储设备、操作系统的抽象概念2014-08-22上一章LZ给各位展示了一下hello程序的简单执行过程,可以看出在这一过程当中,系统在数据的传输上花费了大量的时间。硬件开发商为了减少这种数据传输的时间成本,采用一种高速缓存的技术去减少这种时间成本。高速缓存被置放于处理器当中,与处理器中的寄存器文件直接进行数据交换,这样大大减少了数据传输的时间成本,使得程序的运行速度可以得到数倍的提升。而作为一个程序猿,如果可以适当的利用高速...
计算机系统原理(四) 并发与并行、浅谈抽象

计算机系统原理(四) 并发与并行、浅谈抽象

计算机系统原理(四) 并发与并行、浅谈抽象2014-08-22引言并发与并行一直是IT界炙手可热的词汇,相信各位猿友都不会陌生。在计算机系统这本书当中,对并发与并行的解释是,并发是指一个同时具有多个活动的系统,而并行则是指的用并发使得一个系统运行的更快。这与LZ之前的理解应该是不冲突的,在LZ之前看来,并发是一种模式,而并行是实现这种模式的手段之一。线程级并发在进程的抽象概念下引入了线程,而线程级并发的概念,就是指的多个线程在同一时间(并非是绝对同时的)活...
计算机系统原理(五) 信息的存储与值的计算

计算机系统原理(五) 信息的存储与值的计算

计算机系统原理(五) 信息的存储与值的计算2014-08-22上一章(1.1-1.4)LZ和各位简单的探讨了一下计算机系统中的一些基本概念,本次我们将进入一个崭新的世界。在1.1那一章当中,我们已经简单的提及了信息的概念,本次我们会逐渐深入的讨论信息的相关内容。引言我们很难想象,1和0这两个再简单不过的数字,给计算机科学带来了彻底的改变。对于无法与人脑相比的计算机来说,简单的1和0就是最适合它们的数字。不过1个1或者1个0往往代表不了任何意义,它们必须被赋...
计算机系统原理(六) 布尔代数以及C语言上的位运算

计算机系统原理(六) 布尔代数以及C语言上的位运算

计算机系统原理(六) 布尔代数以及C语言上的位运算2014-08-22布尔代数上的位运算布尔代数是一个数学知识体系,它在0和1的二进制值上演化而来的。我们不需要去彻底的了解这个知识体系,但是里面定义了几种二进制的运算,却是我们在平时的编程过程当中也会遇到的。这四种运算分别是或、与、非和异或。下图展示了在布尔代数的知识体系中,对这四种运算的定义。从左至右依次是非、与、或以及异或。这个图阐述的是针对一位二进制的运算结果,我们可以将其扩大到N位二进制。比如两个二...
计算机系统原理(七) 整数的表示方式精解:无符号与补码编码

计算机系统原理(七) 整数的表示方式精解:无符号与补码编码

计算机系统原理(七) 整数的表示方式精解:无符号与补码编码2014-08-22上一章我们简单的介绍了布尔代数以及C语言的位运算,本次我们主要来看,二进制如何表示整数,这是很重要的一章,希望各位猿友莫要错过。C语言中的整数类型及范围我们依然以C语言为例,C语言当中提供了多种整数类型,一共十种,位数为1、2、4、8,其中32位机器上,4位的有两种,在64位机器上,8位的有两种。具体的LZ这里就不多做介绍了。以下是32位和64位系统上,这十种整数的范围。上述是C...
计算机系统原理(八) C语言的有符号与无符号、二进制整数的扩展与截断

计算机系统原理(八) C语言的有符号与无符号、二进制整数的扩展与截断

计算机系统原理(八) C语言的有符号与无符号、二进制整数的扩展与截断2014-08-22开篇请各位猿友允许LZ啰嗦几句,最近一直在写计算机系统原理这系列文章,也已经下定决心要把这本书的内容写完。主要目的其实是为了巩固LZ的理解,另外也想把这些内容分享给猿友们,毕竟LZ觉得这些内容对程序猿的实力还是有着很大的潜在提高的。只是这种原理性的文章写起来相对复杂与繁琐,较对起来也比较困难,因为文章里充斥着各种各样的数学符号,不过相对于这样的写作难度来说,其受欢迎程度...
计算机系统原理(九) 二进制整数的加法运算和减法运算

计算机系统原理(九) 二进制整数的加法运算和减法运算

计算机系统原理(九) 二进制整数的加法运算和减法运算2014-08-222.3我们介绍了无符号编码和补码编码,本次我们来看一下在这两种编码下,整数的运算是如何进行的。看后之余,别忘了“点个推荐哦。”引言平时的编程过程中,当进行整数运算时,经常会遇到一些奇怪的结果,比如两个正数加出负数,两个负数可以加出一个正数,这些都是由于数值表示的有限性导致的。下面我们来看看C语言和Java语言当中的例子。public static void ma...
计算机系统原理(十) 二进制整数的乘法运算和除法运算

计算机系统原理(十) 二进制整数的乘法运算和除法运算

计算机系统原理(十) 二进制整数的乘法运算和除法运算2014-08-222.5我们着重介绍了二进制整数的加、减运算,本次我们继续介绍乘、除运算。本章是迄今为止最难的一章,希望各位猿友有所收获,也别忘了“点个推荐哦”。引言运算一直是程序运行当中一个重要的环节,而在二进制的运算过程当中,加法运算又是重中之重,它基本上奠定了二进制运算的基础。因为无论是减法还是乘法,都可以由加法运算来替代,唯有除法不能由加法替代。了解计算机运算的规律,可以...
计算机系统原理(十一) 二进制浮点数和IEEE标准

计算机系统原理(十一) 二进制浮点数和IEEE标准

计算机系统原理(十一) 二进制浮点数和IEEE标准2014-08-222.6我们进行了二进制整数运算的最后一役,本次LZ将和各位一起进入浮点数的世界,这里没有无符号,没有补码,但是有各种各样的惊奇。倘若你真正的进入了浮点数的世界,一定会发现它原来是这么有意思,而不是像之前一样,觉得了解浮点数的内容没什么用,只要会简单的使用就行了。当然,这其中也可能有部分猿友是觉得这部分内容太难,而对它失去了学习的兴趣。就像之前的LZ一样,曾经对IEEE标准望而却步,不过相...
计算机系统原理(十二) 浮点数的舍入、Java中舍入例子及浮点数运算

计算机系统原理(十二) 浮点数的舍入、Java中舍入例子及浮点数运算

计算机系统原理(十二) 浮点数的舍入、Java中舍入例子及浮点数运算2014-08-22前言上一章我们简单介绍了IEEE浮点标准,本次我们主要讲解一下浮点运算舍入的问题,以及简单的介绍浮点数的运算。之前我们已经提到过,有很多小数是二进制浮点数无法准确表示的,因此就难免会遇到舍入的问题。这一点其实在我们平时的计算当中会经常出现,就比如之前我们提到过的0.3,它就是无法用浮点小数准确表示的。为此LZ专门写了一个小程序,使用Java语言打印出了0.3的二进制表示...
计算机系统原理(十三) 汇编语言简介

计算机系统原理(十三) 汇编语言简介

计算机系统原理(十三) 汇编语言简介2014-08-22引言本系列拖了蛮久了,主要是因为LZ写的时候其实刚看到第二章,因此这一段时间快速看了下第三章,并花了点时间沉淀了一下,这才耽误了下来。本文是3.X系列的第一篇,也是汇编世界的开篇。LZ一直在想如何能让这一系列稍微变得有趣一些,因为第二章实在是太枯燥了,连LZ都觉得无聊至极,不过LZ竟然鬼使神差的把课后题做了不少。汇编这一部分相对而言会好很多,尽管它依然不是我们熟悉的编程语言,但是终归还是语言,而不再是...
计算机系统原理(十四) 数据格式、访问信息及操作数指示符

计算机系统原理(十四) 数据格式、访问信息及操作数指示符

计算机系统原理(十四) 数据格式、访问信息及操作数指示符2014-08-22引言本文的内容其实可以成为汇编语言的基础,因为汇编语言大部分时候是在操作一些我们平时开发看不到的东西,因此本文的目的就是搞清楚,汇编语言都是在操作些什么东西。或者更准确的说,各种汇编指令都是在操作什么样的对象。汇编层次的对象在平时的开发过程中,CPU处理器的状态对开发者是隐藏的,我们看不到CPU当中各个对象的状态。但是在汇编语言中,我们可以清楚的看到这些对象的状态,其中CPU主要包...
计算机系统原理(十五) 数据传送(复制)指令详解

计算机系统原理(十五) 数据传送(复制)指令详解

计算机系统原理(十五) 数据传送(复制)指令详解2014-08-22引言上一章我们已经介绍了汇编语言的基础部分,包括数据格式、寄存器以及操作数的标识方式,接下来我们就应该去认识一下汇编语言当中的各个指令了。这些指令大多数都非常简单,但是组合在一起却能模拟出我们程序当中想要的任何效果,确实是十分神奇的一件事。 数据传送指令数据传送指令的目的是为了将一个数据从一个位置复制到另外一个位置。既然如此,那么数据传送指令就会包含一个源操作数和一个目的操作数,指令会将...
计算机系统原理(十六) 算数与逻辑运算指令详解

计算机系统原理(十六) 算数与逻辑运算指令详解

计算机系统原理(十六) 算数与逻辑运算指令详解2014-08-22引言上一章我们已经着重讨论了数据传送(或者说复制)指令,相信各位猿友现在都已经对此有一些了解了。说真的,LZ在看第三章的过程中,不断的被汇编的魅力深深的震撼,这些看似简单的汇编指令,却可以将复杂的程序井然有序的执行完毕,实在是让人惊叹。时至今日,这本看似枯燥无比却实则魅力十足的书,已经深深的将LZ吸引了。希望各位猿友也有这样的感觉,这是一种非常好的感觉,接下来,各位就一起和LZ来认识认识新的...
计算机系统原理(十七) 特殊的算术操作指令详解

计算机系统原理(十七) 特殊的算术操作指令详解

计算机系统原理(十七) 特殊的算术操作指令详解2014-08-22引言上一章我们讨论了常见的算术与逻辑运算指令,其中比较有特点的是leal指令,本章我们再来看几个比较特殊的操作指令,这些指令可以让只有32位的寄存器存储64位的数据,是不是十分霸气侧漏呢。初识我们先来看看这些指令的大致介绍,如果各位看过上一章的话,会发现这里的指令有的会有些眼熟,但是它们的作用却截然不同。以下是书中的一张概图。第一个指令有些眼熟吧,它就是我们上一章当中的imul乘法指令的双字...
计算机体系结构(一) 进制知识

计算机体系结构(一) 进制知识

计算机体系结构(一) 进制知识2014-10-30 csdn博客 龙轩在学习计算机基础时,都会提到各种进制。 R进制,就是逢R进1。 我们日常生活中常用的有十进制的数字,7进制的星期,12进制的时间,24进制时间。然而在计算机中则常用二进制,也只能识别二进制。今天就简单的说一下常用的进制之间的转换。1. R进制转换为十进制。口诀:按权展开,依次求和。举例:二进制1101.11转十进制说明:(1)权值即为该位置的大小,比如说十进制的243,2所在位的权值为1...
计算机体系结构(二) 码制知识

计算机体系结构(二) 码制知识

计算机体系结构(二) 码制知识2014-10-30 龙轩 现在很多程序员,只是会用计算机编程,但是许多基础的知识却很薄弱。今天就跟大家说说码制的问题。计算机对数据做的读取、传输、运算、显示等操作,都离不开码制。常见的编码方式有:原码、反码、补码、移码、BCD码。我们一一说道。【原码】表示:最高位为符号位(0表正,1表负),其余各位为数的绝对值。举例: [+11]原 =00001011 。 [-11]原 = 10001011 。范围:-127~+127优点:...
<< 11 12 13 14 15 16 17 18 19 20 >>