美文网首页
Introduction 引言

Introduction 引言

作者: 勤学奋进小郎君 | 来源:发表于2018-09-23 23:54 被阅读0次

History of Assemble Language汇编语言的历史

  • 在计算机最底层,是是由电信号组成的,而电信号是由0伏(off)电压和5伏(on)构成的,但是起伏的电压不太好分辨,所以引入二进制数字0和1,有0和1分组形成的指令集就是计算机处理器的最小的工作单元,如下:
1110 0001 1010 0000 0010 0000 0000 0001

但是这样的指令我们也很难看懂,所以我们引入助记符,让一串特定的二进制指令有自己的别名,通常有三个字母组成,但是这不是规定(eg:mov, push)。

使用助记符也就是二进制指令的别名,来编写的程序,称之为汇编程序,所以汇编语言是人类进行计算机编程的最低级别的语言。

我们编写好汇编程序,要让机器正常执行,中间就需要一个过程,汇编,使用GNU Binutils将所有助记符(汇编语言)转化成机器码(eg:as file.s -o file.o,然后ld file.o -o file)。


GNU:一个自由的操作系统
Binutils:GNU提供的二进制工具集,其中就有汇编工具as


Compiled Language编译语言

在汇编语言之上就是结构化的编译语言了(eg:C),需要编译器编译成机器码来运行(eg:gcc file.c -o file)

Scripted Language脚本语言

再往上,就是一些脚本语言(eg:PHP,Java),这些语言需要通过解释器interpreter来实现,这些解释器会配置好来运行特定的机器码来实现相应的效果。例如:Java底层是JVM虚拟机,里面有自己的一套指令集,但是最底层都是一样的。

高级语言的优势和不足

  • 优势
    编写速度快、维护简单
  • 不足
    运行慢、需要的计算机资源多。举个栗子,像GBA这种低配设备(16.7Mhz CPU and 工作内存:32KB+CPU内部专用 256KB)使用脚本语言的话,可能会直接蹦掉,所以绝大部分GBA使用C/C++

汇编语言的特点

汇编编程,你需要知道处理器是怎么工作的并且用一种处理器明白的方法来编写写代码,在高级语言中,这些工作是编译器或解释器做的

  • 优点
    1、没有编译、解释的过程,执行速度快。没有过多的环境依赖的需求,文件小
    2、让你更了解CPU的功能
    3、处理int型数据更快,汇编会告诉你原因
    4、语句本身的简单性也具有美学品质:不会乱搞类,不同的循环样式,运算符优先级等 - 它是一行,一个操作码,并且从不超过少数几个参数。

  • 缺点
    没有高级语言的一些安全措施,所以更容易被破解,更危险

目标Purpose

  • ARM和THUMB指令集的掌握、使用GCC让汇编C和汇编的混合代码
  • 编写汇编Exploit

一些文档资料

  • The rather large official ARM7DTMI Technical manual (PDF): DDI0210B_7TDMI_R4.pdf.
  • GBATek instruction reference: ARM / THUMB.
  • Official ARM quick-references (PDF): ARM + Thumb
  • Re-eject's quick-references (PDF): GAS / ARM / THUMB. (note: minor syntax discrepancies at times)
  • GNU Assembler manual: GAS.

Reference引用

https://azeria-labs.com/writing-arm-assembly-part-1/
https://www.coranac.com/tonc/text/asm.htm

相关文章

网友评论

      本文标题:Introduction 引言

      本文链接:https://www.haomeiwen.com/subject/izaqoftx.html