
MIPS
junmuzi
这个作者很懒,什么都没留下…
展开
-
mips 寄存器理解
通用寄存器(GPR)有32个通用寄存器,$0到$31:$0:即$zero,该寄存器总是返回零,为0这个有用常数提供了一个简洁的编码形式。MIPS编译器使用slt,beq,bne等指令和由寄存器$0获得的0来产生所有的比较条件:相等,不等,小于,小于等于,大于,大于等于。还可以用add指令创建move伪指令,即move$t0,$t1实际为add$t0,$0,$t1 焦林前转载 2012-11-02 16:23:17 · 1198 阅读 · 0 评论 -
mips64el-unknown-linux-gnu-gcc交叉编译ELF-64程序
当用mips64el-unknown-linux-gnu-gcc编译一个t.c的文件时,t.c的内容如下:#includeint main(){ return 0;}mybox ~ # mips64el-unknown-linux-gnu-gcc -c t.cmybox ~ # mips64el-unknown-linux-gnu-ld -o原创 2013-02-27 14:49:34 · 2227 阅读 · 0 评论 -
linux 页表
原文网址:http://blog.chinaunix.net/uid-26817832-id-3146395.html 简单来说,讨论linux页表就是讨论linux进程的的页表:linux页表的创建与更新都包含于进程的创建与更新中。当前的linux内核采用的是写时复制方法,在创建一个linux进程时,完全复制父进程的页表,并且将父子进程的页表均置为写保护(即写地址的时候会产生缺页转载 2013-04-05 19:47:14 · 1368 阅读 · 0 评论 -
mips 异常处理
原文网址:http://blog.chinaunix.net/uid-26817832-id-3146385.html一、硬件完成的工作1、set epc2、set EXL 表示进入内核模式和禁止中断3、set cause寄存器;有的异常也需设置BadVaddr寄存器4、跳到异常入口执行二、软件工作1、区分不同的异常,Cause寄存器的ExcCode域转载 2013-04-05 21:43:43 · 2440 阅读 · 0 评论 -
mips 页表相关(tlbrefill 全解释)
原文网址:http://blog.chinaunix.net/uid-26817832-id-3146390.html一、64位虚拟地址划分假设页的大小是16K,即PAGE_SHIFT = 14PGD 含有2K项,每一项占8个字节,总共16K(一页)VA[46:36] 索引PGD,低3位置0,意在以8字节为单位索引PGD。用于索引PGD的VA 的位数正好为11位,与每页转载 2013-04-05 21:44:59 · 2179 阅读 · 0 评论 -
mips 异常处理和进程切换
原文网址:http://blog.chinaunix.net/uid-26817832-id-3146430.html一.内核栈每个进程拥有一个内核栈,调度切换至一个新进程时,会根据task_struct->stack(struct thread_info 结构体类型) 的值设置*kernelsp(当前正在运行进程之内核栈栈顶),将kernelsp的值设置为转载 2013-04-05 21:48:57 · 1340 阅读 · 0 评论 -
mips 精确异常和延时槽
原文网址:http://blog.chinaunix.net/uid-26817832-id-3146408.html一、非精确异常在多发射乱序执行的流水线 CPU 上,从指令进入流水线到异常事件的发生,期间要经过若干流水级,此时 PC 的值已指向其后的某条指令,在实现非精确异常的 CPU 上就把此时的 PC 值作为引起异常指令的所在(为了表达的方便,记为 eptr)。转载 2013-04-05 21:46:15 · 1162 阅读 · 0 评论 -
mips 内嵌汇编
原文网址:http://blog.chinaunix.net/uid-26817832-id-3146404.html1. GCC 内嵌汇编的基本格式asm("assembly code");如:asm("syscall"); //触发一个系统调用如果有多条指令,则需在指令尾部添加'\t'和'\n',如:asm("li v0, 4011\t\n"转载 2013-04-05 21:46:55 · 2018 阅读 · 1 评论 -
cscope如何生成特定平台的代码搜索(以mips平台为例)
1.sudo apt-get install vim-full cscope ctags2.use below script to generate cscope.files--------------------------------------------#! /bin/shLNX=`pwd`find $LNX原创 2013-04-06 17:11:10 · 967 阅读 · 0 评论 -
linux 内核学习之内核栈
内核栈不比用户空间的栈,在用户空间栈的大小可以很大,并且可以动态的增长。但是,在内核栈却小而固定。每个进程的内核栈的大小取决于体系结构,同时也与编译选项有关。历史上,每个进程都有两页的内核栈。所以,在32位或64位体系机构的下,内核栈的大小分别为4kB和8kB。 在任意一个函数中,你都必须尽量节省栈资源。只要在具体的函数中让所有的局部变量的大小之合不超过几百个字节。在内核中,进转载 2013-04-06 09:54:12 · 637 阅读 · 0 评论 -
CS5536中MFGPT时钟的实现
MFGPT简介: 全称:Multi-Function General Purpose Timer. 它包括了8个timers,其中的6个工作在 working domain,频率为32 KHZ 和 14318 KHZ 另外2个工作在 standy domain,频率为32 KHZ. 对于输入时钟频率,都有15位可以用来分频,从而分别产生15种时钟频率.转载 2013-04-22 10:59:54 · 895 阅读 · 0 评论 -
Debugging the kernel using Ftrace
原文网址:http://lwn.net/Articles/365835/也可以参考印度的一篇文章,网址:http://www.linuxforu.com/2010/11/kernel-tracing-with-ftrace-part-1/Ftrace is a tracing utility built directly into the Linuxkernel转载 2013-04-13 22:45:06 · 1393 阅读 · 0 评论 -
Linux 上下文切换分析笔记 (MIPS)
原文网址:http://blog.openrays.org/blog.php?do=showone&tid=455这篇我也没看懂,先记录下来,留着改天再慢慢研究。1. 内核栈切换 (MIPS)调度切换至一个进程时,根据 task_struct->thread_info 的值设置 *kernelsp(当前正在运行进程之内核栈栈底),其值为 thread_info + THRE转载 2013-02-25 14:51:59 · 605 阅读 · 0 评论 -
.set push .set pop什么作用?
The directives `.set push' and `.set pop' may be used to save andrestore the current settings for all the options which are controlledby `.set'. The `.set push' directive saves the current settin原创 2013-03-05 10:17:30 · 4018 阅读 · 0 评论 -
龙芯下汇编语言编程(Hello world)
原文网址:http://comcat.blog.openrays.org/blog-htm-do-showone-tid-310.html1. Hello World从经典的Hello World开始: .text #表示将后面的代码编译后置于目标文件的.text段 .globl main转载 2013-03-04 16:49:44 · 1880 阅读 · 0 评论 -
MIPS 通用寄存器
MIPS有32个通用寄存器($0-$31),各寄存器的功能及汇编程序中使用约定如下:下表描述32个通用寄存器的别名和用途REGISTERNAMEUSAGE$0$zero常量0(constant value 0)$1$at保留给汇编器(Reserved fo转载 2012-11-02 16:24:02 · 889 阅读 · 0 评论 -
mips体系结构特点(转载非原创)
1、所有指令都是32位编码;2、有些指令有26位供目标地址编码;有些则只有16位。因此要想加载任何一个32位值,就得用两个加载指令。16位的目标地址意味着,指令的跳转或子函数的位置必须在64K以内(上下32K);3、所有的动作原理上要求必须在1个时钟周期内完成,一个动作一个阶段;4、有32个通用寄存器,每个寄存器32位(对32位机)或64位(对64位机);5、本身没有任何帮助运算判转载 2012-11-04 22:42:02 · 2949 阅读 · 0 评论 -
loongson开发者社区
linux-loongson/community (社区版龙芯Linux)网址:http://dev.lemote.com/trac/linux-loongson-community原创 2012-11-12 23:00:37 · 786 阅读 · 0 评论 -
MIPS CPU寄存器和系统控制协处理器CP0 分析
MIPS CPU 寄存器包括:32个通用寄存器,3个特殊功能寄存器和MIPS FPU寄存器。 MIPS的寄存器比X86(X86系统的寄存器有14个,划分为四类:通用寄存器,指令指针寄存器,标志寄存器,段寄存器)要多,有35个,但其中有32个(r0~31)是通用寄存器,两个(HI,LO)是特殊功能寄存器(用于存储整数乘除和乘/累加操作的结果),还有一个是特殊功能程序计数器PC(progra原创 2013-01-22 21:20:12 · 8151 阅读 · 0 评论 -
深入浅出MIPS 二 MIPS的内存映射
二 MIPS的内存映射 在32位MIPS体系结构下,最多可寻址4GB地址空间。这4GB空间的分配是怎样的呢?让我们看下面这张图: +----------------------------------------------+ | | 0xFFFFFFFF | |转载 2013-01-22 21:24:03 · 1291 阅读 · 0 评论 -
深入浅出MIPS 一 MIPS概述
原文网址:http://www.kernelchina.org/node/257英国科学家Dominic Sweetman(经典著作See MIPS Run的作者),称MIPS为“高效的RISC体系结构中最优雅的一种体系结构”。它是一个双关语:即是Microcomputer without Interlocked Pipeline Stages的缩写,同时又是Millions of Ins转载 2013-01-22 21:24:48 · 2440 阅读 · 0 评论 -
深入浅出MIPS 四 MIPS的异常与中断
原文网址:http://www.kernelchina.org/node/278MIPS的异常和中断,同其他体系结构,例如Intel的IA32架构下的中断/调用门/陷阱机制类似,其目的主要有三:一,提供一个合法地从用户态到内核态的切换通道,使得程序能够访问如CP0、KSeg等平时被保护的资源;二,处理一些非法的操作,如TLB Miss/Address Error等;三,处理外部转载 2013-01-22 21:12:51 · 7405 阅读 · 0 评论 -
大端模式&小端模式、主机序&网络序、入栈地址高低问题
一、大端模式&小端模式所谓的“大端模式”,是指数据的低位(就是权值较小的后面那几位)保存在内存的高地址中,而数据的高位,保存在内存的低地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;所谓的“小端模式”,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分转载 2013-02-03 23:54:39 · 767 阅读 · 0 评论 -
64位MIPS指令处理器的流水线设计
1引言随着集成电路设计和工艺技术的发展,嵌入式系统(SOC)已经在PDA、机顶盒、手机等信息终端中被广泛应用。他不仅减小了电路尺寸,而且具有成本低廉,可靠性高,功耗低等优点。可以说嵌入式系统是未来集成电路发展的方向。而作为嵌入式系统核心的微处理器,是SOC不可或缺的“心脏”,微处理器的性能直接影响整个SOC的性能。为了提高CPU的效率和指令执行的并行性,现代微处理器已经广泛采用流水转载 2013-01-22 17:47:37 · 2468 阅读 · 0 评论 -
MIPS体系结构 Q & A Part 0x03 CP0篇
20.Q: CP0是干嘛的?A: CP0是协处理器0,Co-Processor 0的缩写,MIPS最多可以支持4个协处理器,其中CP0是强制要求实现的,用于处理器的状态控制等。它包括MMU、异常控制、Cache控制等功能。21.Q: MIPS的其他协处理器都有什么呢?A: 这个和具体厂商的实现有关系了。CP1是浮点协处理器,是可选的,CP2和CP3是厂家自定义的。22.转载 2013-01-22 17:54:49 · 1797 阅读 · 0 评论 -
How to git clone linux kernel for developer(THE URL)
stable:git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git原创 2014-10-09 02:19:32 · 1074 阅读 · 0 评论