程序的机械级表示
第二章 信息的表示和处理
信息存储
整数表示
整数运算
浮点
小结
信息存储第三章 程序的机械级表示
gcc编译器的使用
汇编语言
boom
gccgcc编译器是通过命令行来实现的,在mac下需要单独安装,在linux下是自带
在启动的时候会安排优化级别,二级优化是性能优化和使用方便的一种折中
在启动gcc编译器的时候会首先调用将插入所有用#include命令指定的文件,并且扩展宏
其次编译器将.c文件转换为汇编语言的.s文件
最后汇编器将汇编代码转换为二进制目标代码文件.o
1234gcc -O2 -S code.cgcc -O2 -C code.cobjdump -d code.omovl $0x4050,%eax Immediate-Register
跳转指令:跳转到另一行指令(指令一般是一行一行的执行)
条件码:描述了最近的算数或逻辑操作的属性,
逻辑操作
leal是指将存储器读数据到寄存器,没有引用存储器。将有效地址写入目的操作数(寄存器)
在这里我们需要熟练的掌握寻址方式,上面我写的表有,可以看看
右 ...
Android请求权限问题
Android请求权限问题
概念
如何操作
源码解析
概念因为Android应用都是在类似于沙盒的中允许,只能访问沙盒内部的资源,如果想要访问沙盒外的资源就需要去请求权限。
在Android 6(不包含Android 6)以下的时候我们经常是当我们安装应用的时候,会提示用户是否允许,当升级应用需要更多权限的时候也会进行一个提示,在Android 6 (包含Android6)以上 ,Google改变了这种请求的做法,列出了一些请求的原则,为了更好的去保护用户的隐私
在用户需要互动时再请求对应的权限
权限对应某种功能,拒绝此权限不能让用户不能使用APP,只需要拒绝某项功能,并且适当降低应用权限
不要假设任何系统行为
在Android 6对于的API是 23,在这里我们可以说SDK可以与API对于,但是二者还是有一些区别,SDK是Software Development Kit(软件开发工具包) API是Application Programming Interface(编程接口)。SDK是程序包,程序包中有一些软件功能,程序包几乎是全封闭的,只有接口可联通外界,这个接口就是API。使 ...
Retrofit:网络框架
Retrofit:网络框架前言从我刚开始Android开发的时候,我总会羡慕大牛们写的APP都是网络请求数据相关的,总觉得这个网络请求是最难的部分,当我学完JAVA和Kotlin的时候,再回头看网络,其实都是由输入输出流来放入Socket套接字进行UDP连接。但是对于我刚开始学的时候,总是需要不停地看Retrofit的介绍和博客,总是很复杂,感觉没有最明确的告诉你如何去使用,于是一年多使用了几次Retrofit的时候,想要自己去写一篇博客,以供自己回顾。
(注:前面可以只看什么是网络请求和如何利用Java使用Retrofit,源码解析及以后的可以以后在写)
什么是网络请求?当我们看一些牛人的代码的时候,我们总能看到一些仓库数据类叫什么RemoteRepo,LocalRepo 什么意思?就是说我的APP数据来源于两个地方:有可能是我请求服务器时候拿来的数据(个人信息等等),有可能是我本地存储的数据(历史记录等等),在互联网中请求不属于本地服务器的数据,就是网络请求。在网络请求中,我们分为了几个步骤:
配置网络请求参数(Build request)
创建网络请求对象 (Call requ ...
Git的那些事
git的那些事关于初始配置的那些事最近,我又重装了一个linux系统—deepin系统。这个系统最大的好处就是等QQ不仅继承了优秀的UI设计,而且自带了wine,有很多兼容性软件可以直接在应用商城去下载,最重要的一点是用的是linux的内核,舒适的命令行与linux的自带“服务器”属性。但是在git配置的时候(我已经很长时间没有重新配置过git了)出现了各种各样的问题,想做一个关于配置的一个教程,并且学会如何去查看自己是否配置正确。
首先,我们需要在deb系下的系统(ubuntu或deepin)安装一下git
12sudo apt-get update sudo apt-get install git
第一行shell是表示在apt软件包下更新一下所有的源。第二行shell是表示在apt软件包下安装git
最后我们查看一下是否安装了git
1git --version
如果安装成功,则会显示:git version 2.11.0 (当然版本号可能会不一样)
第二步,我们再看一下自己的github/gitee的用户名和注册邮箱,并且config一下。首先我们看一下自己以前有 ...