汇编语言学习笔记(八)-字符串
字符串处理可能是编程语言中最耗时以及最繁琐的操作,比较一个整数只需要比较32位,但是比较字符串却需要循环比较字符串的每一个字符,相关的复制 追加操作则需要很多的内存拷贝操作,可能各种语言都对应有一系列的字串处理库,对汇编来说,当然没有类似的 …
标签
字符串处理可能是编程语言中最耗时以及最繁琐的操作,比较一个整数只需要比较32位,但是比较字符串却需要循环比较字符串的每一个字符,相关的复制 追加操作则需要很多的内存拷贝操作,可能各种语言都对应有一系列的字串处理库,对汇编来说,当然没有类似的 …
寻址一直以来都是汇编中的关键内容,但是在平坦内存模式下,汇编寻址的难度降低很多,不过Intel CPU必须经历段式内存模式后才可到达页式存储,所以如果系统底层编程,也可能会涉及到实模式下的程序设计,需要掌握段式寻址。
在上面几篇已经提到了一些数学运算功能,这篇再详细介绍之,数学运算无非是一些加减乘除,移位等等,就是这些简单的操作造就了丰富多彩的程序世界,可以说程序的根本就是计算。
程序不可能一顺到底的执行,需要有一些分支流程控制的语法,对高级语言来讲,有分支循环等,对于汇编,有一个“跳”,或者选择性跳,跳转指令本身非常简单,仅仅一个jmp指令,类似于c语言的goto,语法为:
汇编语言和高级语言不通,需要清晰掌握数据存储和机器相关的大量细节,高级语言会自动处理很多赋值的细节,有时甚至都不知道编译器给我创建了多少变 量,赋值了几次,但在汇编里,一切都变得很清晰了,你需要自己处理每个赋值的细节,这是通过mov指令实现 …
其实对于cpu来说,本没有什么类型之分,仅是一些内存,至于是什么,看你怎么去计算它们了,汇编是与机器码一一对应的,但是还是有些许区别,汇编毕竟还需要编译连接,为了给人使用方便,还是定义了不少数据类型(也有汇编除外,比如NASM,完全是对内存 …
前面总结了一下普通寄存器的知识,这里绍下汇编程序的基本框架。 GAS语法框架 程序员学习语言都是从hello world开始的,这样能快速展示一个能运行的完整程序,对语言有个直观的理解。首先说一下环境配置,对于linux程序,无需过多的配置 …
一直在犹豫汇编语言开始讲什么,如果只说指令,常用的也就几十条甚至十几条指令,如果认为学习汇编就是学习一些指令,那未免有点舍本逐末,如果从IA-32构架开始,又过于晦涩,纠结之下还是先对下基本寄存器做个介绍,为了完整性,顺便对其他高级寄存器做 …
为什么开始 从开始学习汇编到现在也有很长时间了,虽算不上刻苦钻研,但接触久了多少也有些感悟,打算就此做一些总结,一来算是备忘,二来也可以梳理知识使之融会贯通。我自小就不是一个勤奋的人,写这个东西也不会很积极,只当做是闲暇时的消遣,希望不要无 …
C++11 已经出来很久了,一直没有时间好好学习一下,最近项目中用到了一些,花了点时间总结一些常用的语法和库,以备参考。 题外话 C++语言是一门非常繁复的语言,支持的编程范式很多: