![](https://img-blog.csdnimg.cn/20190918140053667.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
MIPS/ARM体系结构/汇编
mips,arm64体系架构、指令集等
海棠花败
这个作者很懒,什么都没留下…
展开
-
C语言提供的线程/进程间同步(锁)机制
##C语言提供的线程间同步(锁)机制/usr/include/pthread.h中提供1、互斥体 (Mutex)描述:互斥体是比信号量更为简单是睡眠锁。使用范围:最为常用/* Initialize a mutex. */extern int pthread_mutex_init (pthread_mutex_t *__mutex, const pthread_mutexattr_t *__mutexattr) __THROW __nonnull...原创 2020-12-31 09:24:41 · 6353 阅读 · 0 评论 -
__attribute__((weak))
强引用:对外部目标文件的符号引用在目标文件被最终链接成可执行文件时,它们必须被正确的决议,如果没有找到该符号的定义,链接器就会报未定义错误,这种被称为强引用。弱引用:对于GCC,使用__attribute__((weak))关键字来声明的函数称为弱引用。对外部目标文件的符号引用在目标文件被最终链接成可执行文件时,如果没有找到该符号的定义,链接器不会认为它是一个错误,程序可以正常编译完成。/*file main.c*/#include <stdio.h> extern void.原创 2020-08-20 13:23:40 · 1814 阅读 · 0 评论 -
MIPS ABI / AARCH64 ABI:n32 and Native 64-Bit C Parameter Passing
一、参数调用规则如下表:ArgumentList Register and Stack Assignmentsn1,n2,n3,n4$4,$5,$6,$7d1,d2,d3,d4,d5$f12, $f13, $f14, $f15, $f16n1,n2,d1$4, 5,5,5,f14d1,n1,n2$f12, $5,$6d1,d2,d3,d4,d5,s1,s2,s3,s4$f12, $f13, $f14, $f15, $f16, f17,f17,f17,原创 2020-07-23 13:36:25 · 689 阅读 · 0 评论 -
ARMv8(aarch64)指令集特性
有了之前mips系统架构的基础,再了解arm64就相对轻松多了。所谓体系架构,核心就是寄存器、指令集和abi(即寄存器和指令集的使用规范)。下面就分这3方面展开做的学习笔记。指令编程风格ARM官方风格:官方风格指令一般使用大写,例如:LDR R0,[R1],Windows中常使用这种风格。GUN Linux风格:指令一般使用小写字母,例如:ldr r0,[r1],Linux环境中常用这种风格.一、ARM64寄存器 ARM64寄存器分类:通用寄存器、浮点寄存...原创 2020-07-11 12:23:36 · 8909 阅读 · 0 评论 -
ELF(Executable and Linking Format)文件结构描述
ELF文件(Executable and Linking Format)是用在Linux系统下的一种目标文件(object file)存储格式。典型的目标文件有如下3类:可重定向文件(relocatable file)可重定向文件里面包含了代码和数据,用于和其他可重定向文件一起链接形成一个可执行文件或者动态库。 可执行文件(executable file) 可执行文件里面...原创 2020-03-31 14:13:13 · 1864 阅读 · 0 评论 -
MIPS指令集:内嵌汇编asm语法介绍
内嵌汇编(Assembly)是可以直接插入在c/c++语言中汇编程序。它实现了汇编语言和高级语言的混合编程。当在高级语言中要实现一些高级语言没有的功能,或者提高程序局部代码的执行效率时,都可以考虑内嵌汇编的方式。 内嵌汇编标识为asm()。asm是c/c++中的内嵌汇编关键字,或称模板。用于通知编译器,接下来的()内的代码是内嵌汇编程序, 需要特殊处理。()内部...原创 2020-03-30 11:04:49 · 14603 阅读 · 7 评论 -
MIPS指令集:汇编源程序(.S文件)编写
我们学会了MIPS汇编语言后,编写汇编程序还需要一个“框架”,用“框架”的目的是让我们更加容易的编写汇编程序,把更复杂的任务,比如符号解析、地址重定向、对齐等工作交给工具链去完成。这个框架有2种方式,汇编源代码文件(以.S为后缀)和内嵌汇编(在.c文件中嵌入汇编语言的方式)。本篇介绍.S为后缀的汇编源程序的编写格式。 我们可能经常遇到以.S后缀结尾和.s后缀结尾的...原创 2020-03-29 20:37:47 · 6672 阅读 · 3 评论 -
mips指令优化:__inline__不起效果
程序实例(lock.h):static __inline__ inttas(volatile slock_t *lock){ register volatile slock_t *_l = lock; register int _res; register int _tmp; __asm__ __volatile__( " .set push \...原创 2020-03-17 17:47:09 · 468 阅读 · 0 评论 -
MIPS指令集:寄存器
不同的计算机架构中寄存器的种类和数量也不相同。MIPSmips中用到的寄存器按照功能分为有通用寄存器、协处理器0、浮点寄存器、乘法部件寄存器。通用寄存器共32个,是没有特殊限制,一般程序员可以使用的寄存器。协处理器0寄存器也叫控制寄存器,共32个,用来控制并管理CPU。浮点寄存器和乘法部件寄存器都是专用寄存器。浮点寄存器也叫协处理器1寄存器,共32个,用来存储和浮点计算相关的数据。乘法部件...原创 2020-03-14 15:04:51 · 14374 阅读 · 2 评论 -
MIPS指令集:运算指令、访存指令、分支和跳转、协处理器0指令
计算机指令就是指挥机器工作的指示和命令,程序就是一系列按一定顺序排列的指令,执行程序的过程就是计算机的工作过程。通常一条指令包括两方面的内容: [1]操作码和操作数,操作码决定要完成的操作,操作数指参加运算的数据及其所在的单元地址。在第2章时我们介绍了MIPS所有指令都是32位的,操作码占用高6位(bit31-bit26)表示,低26位按格式划分为R型、I型和J型。本章将按mip...原创 2020-02-22 16:28:30 · 37873 阅读 · 0 评论 -
ptrace的使用流程
参考链接: https://blog.csdn.net/imred/article/details/90141080一、tracer和tracee的跟踪状态建立 两种方式:一种情况是tracer是tracee的父进程,进程tracee主动调用PTRACE_TRACEME.另外一种是进程tracer调用PTRACE_ATTACH或者或PTRACE_SEIZE。处理PTRACE_ATTACH请求...原创 2019-12-31 17:56:45 · 2794 阅读 · 0 评论 -
R_MIPS_HI16的重定位:一次mips jal跳转指令执行失败的调试经历
代码中写出的每一个bug,就代表了你的一个知识盲区 近期一直在做criu到mips架构上的移植工作。遇到一个奇怪的问题就是执行jal失败,而且不是每次都出现。 代码指令如下: lw a0, __export_parasite_cmd dla a1, __export_parasite_args jal parasite_service nop .byte 0x0d, 0x0...原创 2019-11-22 18:49:57 · 1482 阅读 · 0 评论 -
EJTAG工具的常用命令(龙芯适用)
//startsudo ./ejtag_debug_usb -t//sourcesource configs/config.ls3a4000//qiehuan cpucpu 1//read cpu pg regsset//exit ejtag debug node .go oncont//反汇编addr开始count个指令disas addr [count]...原创 2019-11-22 13:19:56 · 1384 阅读 · 0 评论 -
链接脚本*.lds的编写示例(MIPS/龙芯适用)
简介通常我们学习C语言的第一个程序就是helloword#include <stdio.h>int main(){ printf("hello world! \n"); return 0;}“最小程序”就是脱离C语言运行库,使得他成为一个独立于任何库的纯正“程序”mips 内嵌汇编 https://blog.csdn.net/junmuzi/article/detai...原创 2019-08-16 14:24:18 · 1214 阅读 · 0 评论 -
mips的绝对寻址和相对寻址
不同的处理器指令对于地址的格式和方式都不一样。《程序员的自我修养》一书在4.2章节介绍了x86平台的符号解析和指令修正方式。本文针对龙芯处理器介绍mips的两种重定位类型,绝对寻址和相对寻址。首先你要知道MIPS中跳转指令有两种bal和jal。bal指令格式如下:jal指令格式如下:两者的区别如下表:指令指令格式寻址范围寻址方式重定位类型balI格式(6/5...原创 2019-09-20 18:34:19 · 4683 阅读 · 0 评论 -
MIPS架构下LW指令的重定位过程
通常我们不会去关心指令重定位(relocation)的细节,编译器的ld过程已经帮助我们做好了。由于最近在移植CRIU,涉及到指令的重定位计算,不得不细细研究代码重定位的细节知识。之前的文章介绍了MIPS架构下函数跳转指令bal和jal和重定位过程,感兴趣的同学可以跳转到××查看,本章通过分析lw 指令来分析从内存加载数据到寄存器的重定位的过程。本文有点烧脑,看完注意休息 “_”首先看下面的示...原创 2019-09-27 18:32:33 · 7428 阅读 · 0 评论