嵌入式linux——汇编、C语言基础(一)
一、汇编语言基础
(断断续续的记录自己的笔记。。。2018-10-11)
1. mov指令
基本用法: mov r0, #0
mov指令是赋值指令,用法如上,把立即数0放入到寄存器r0中。
2. bl指令
bl是跳转指令,1)跳转到某个位置去执行可以是汇编语言中的标号,也可以是某个c文件中的函数。2)把返回地址保存到lr寄存器中,返回地址就是下一条指令的地址
3. ldm和stm
这两个和ldr、str是不同的,ldm和stm一次可以操作多个寄存器或者操作多次内存,目前我还没写过这个代码,只是在反汇编文件文件中看到过,比如我学过一个,如下:
ldmia sp, {fp,sp,pc}
...
stmdb sp!, {fp,ip,lr,pc}
ia和db是完成操作而后地址递增和地址先减而后完成操作。以第二条来说,先减在存,把fp、ip、lr、pc寄存器的压入栈中,这几个寄存器是有顺序的,按照标R的标号,高标号存在高地址。sp后面的!是sp最后的值是修改过的值。这条指令:sp先减,再存pc(R15);再减,再存lr..................
4. ldr和str
ldr是读寄存器,也可以像mov那样用,当操作数太大就不能用mov,必须用ldr,因为mov不能操作一个特别大(超出范围的数),而伪指令ldr可以,伪指令不是真的汇编指令,在编译时候,他会被拆分成几条真的汇编指令,完成工作。一次只操作一个寄存器或者操作一次内存
str是写寄存器。用法如下:把数0x12345678放到寄存器r0中,再把这个数写入大r1指的地址中。
ldr r0, =0x12345678
str r0, [r1]
二、C语言基础
嵌入式linux——汇编、C语言基础(一)的更多相关文章
- Golang 汇编asm语言基础学习
Golang 汇编asm语言基础学习 一.CPU 基础知识 cpu 内部结构 cpu 内部主要是由寄存器.控制器.运算器和时钟四个部分组成. 寄存器:用来暂时存放指令.数据等对象.它是一个更快的内存. ...
- 嵌入式LInux之C语言提升篇---Skr Skr Up Up
嵌入式C语言提升 致敬:每一个奋斗的人! Up Up UpC语言常见编译错误1.预处理错误 -E 1-1 找不到源文件错误 自己定义头文件 使用 “xxx.h” 搜索的目录 ./ ...
- 【分享】4412开发板-嵌入式Linux开发须要掌握的基础知识和技能
本文转自迅为电子论坛:http://www.topeetboard.com 1.Linux 基础 安装Linux操作系统 Linux文件系统 Linux经常使用命令 Linux启动过程具体解释 熟悉L ...
- LINUX下C语言编程基础
实验二 Linux下C语言编程基础 一.实验目的 1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用 ...
- 嵌入式Linux学习笔记之第一阶段---基础篇
嵌入式Linux学习分五个阶段 第一阶段: 01嵌入式环境搭建初期 02C语言语法概述 03C语言内存操作 04c语言函数 05linux基础 06gun基础 第二阶段: 01-linux之io系统编 ...
- 零基础小白要如何跟好的学习嵌入式Linux
作为一个新人,怎样学习嵌入式Linux?被问过太多次,特写这篇文章来回答一下. 在学习嵌入式Linux之前,肯定要有C语言基础.汇编基础有没有无所谓(就那么几条汇编指令,用到了一看就会). C语言要学 ...
- 零基础小白要如何跟好的学习嵌入式Linux(转)
作为一个新人,怎样学习嵌入式Linux?被问过太多次,特写这篇文章来回答一下. 在学习嵌入式Linux之前,肯定要有C语言基础.汇编基础有没有无所谓(就那么几条汇编指令,用到了一看就会). C语言要学 ...
- 必备Linux命令和C语言基础
每一个学习嵌入式单片机的伙伴我相信对于这两个都不陌生,这毕竟是嵌入式单片机的生存之道 所有基础还是要打牢的 有句老话说的好基础不牢地动山摇 下面看下系统的资料吧 希望能对大家有所帮 ...
- Linux基础与Linux下C语言编程基础
Linux基础 1 Linux命令 如果使用GUI,Linux和Windows没有什么区别.Linux学习应用的一个特点是通过命令行进行使用. 登录Linux后,我们就可以在#或$符后面去输入命令,有 ...
随机推荐
- 2018-2019-2 20165313 Exp2 后门原理与实践
实践基础问题回答 (1)例举你能想到的一个后门进入到你系统中的可能方式? 应用程序设定后门,用户安装后,后门就可以进入.例如课堂上讲到的百度. (2)例举你知道的后门如何启动起来(win及linux) ...
- [C]排序并插入
/* 编写程序,在主函数中定义一个有10个元素的整型一维数组,用户输入9个数据,调用函数,对数组元素进行从小到大排序后,在函数中输入一个数,插入到数组中正确的位置,并输出. */ #include&l ...
- Linux第六节课学习笔记
if条件测试语句可以让脚本根据实际情况自动执行相应的命令,可以分为单分支.双分支与多分支. /dev/null为无回收功能的垃圾箱. read是用来读取用户输入信息的命令,-p用来显示提示信息. fo ...
- JWT学习小结
JWT全称JSON-Web-Tokens,是一套应对Http其无状态且明文传递请求的特性的规范,保证请求的安全性.我们一般用它来在服务端和客户端之间传递用户的身份信息,实现状态保持. 1,相较于常见的 ...
- <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>会报错
有些时候,<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>会报错,错 ...
- click python cli 开发包
python click 包是一个方便的cli 开发包,我们可以用来开发强大的cli 应用 使用venv 进行环境准备,示例代码来自官方 venv 环境准备 python3 -m venv demoa ...
- 使用User Primary Email作为GUID的问题
最近发现有人使用CRM的user primary email作为GUID, 并且做了plugin来控制user primary email. 这样做法是非常有问题而且会影响同名的再次注册的用户. 假如 ...
- .Net Core 没有 WebForm 是 历史 的 退步, MVC 是一个 糟糕 的 设计
WebForm 自面世以来, 广受广大开发人员的欢迎 . 当然, WebForm 有一些 著名的 弊病, 比如 笨重的 ViewState . 不过 我们 可以 用 一些 更加 先进 和 灵巧 的 ...
- Java String类和StringBuffer类的区别
1.String与StringBuffer的区别简单地说,就是一个变量和常量的关系.StringBuffer对象的内容可以修改:而String对象一旦产生后就不可以被修改,重新赋值其实是两个对象.St ...
- tomcat 发布后中文乱码问题
接口收到数据,使用Eclipse运行调试中文正常显示,发布到Tomcat后中文出现乱码情况: 解决方法: tomcat启动时默认使用系统编码,可更改tomcat bin目录下catalina.bat文 ...