帮助排行榜

口袋妖怪网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3039|回复: 5

[转载汇总]ARM资料汇集

[复制链接]

63

主题

1959

帖子

4103

积分

超级贵宾

汇编语言不会编

威望
18
帅气
0
聪明
49
强壮
0
美丽
1
可爱
0
星沙
0
金钱
21400
发表于 2011-9-2 15:15:07 | 显示全部楼层 |阅读模式
转载目的:NDS的核心cpu是arm7和arm9。不管动态跟踪,还是分析研究复杂一点的金手指,都需要有一些准备知识。

源地址:http://blog.sina.com.cn/s/blog_5f2b5ce90100cmay.html

文章导读
    LPC2000系列CPU的核心是ARM7,由于其C语言编译器已经考虑到了许多复杂的因素,所以作为初学者无需成为一个专家就可以使用LPC2000。但是为了能够设计出可靠的应用系统和培养学习新技术的能力,作为初学者确实需要对CPU的运作机制及其独特的性能有更加深入的理解。
   在连载的文章中,我们将着眼于ARM7内核,处理器状态与模式,内部寄存器,程序状态寄存器,异常、中断及其向量表和存储系统的学习,这是成为一个应用工程师必备的基础。
   本章程序范例除非特别声明,否则处理器均处于ARM状态,执行字方式的ARM指令。
1.1 ARM简介
      ARM公司是一家知识产权(IP)供应商,它与一般的半导体公司最大的不同就是不制造芯片且不向终端用户出售芯片。而是通过转让设计方案,由合作伙伴生产出各具特色的芯片。ARM公司利用这种双赢的伙伴关系迅速成为了全球性RISC微处理器标准的缔造者。这种模式也给用户带来巨大的好处,因为用户只需掌握了一种ARM内核结构及其开发手段,就能够使用多家公司相同ARM内核的芯片。
      目前,总共有超过100家公司与ARM公司签订了技术使用许可协议,其中包括Intel、IBM、LG、NEC、SONY、NXP(原PHILIPS)和NS这样的大公司。至于软件系统的合伙人,则包括微软、升阳和MRI等一系列知名公司。
      ARM架构是ARM公司面向市场设计的第一款低成本RISC微处理器,它具有极高的性价比和代码密度以及出色的实时中断响应和极低的功耗,并且占用硅片的面积极少,从而使它成为嵌入式系统的理想选择,因此应用范围非常广泛,比如手机、PDA、MP3/MP4和种类繁多的便携式消费产品中。2004年ARM公司的合作伙伴生产了12亿片ARM处理器。
1.1.1 RISC结构特性
      ARM内核采用精简指令集计算机(RISC)体系结构,它是一个小门数的计算机,其指令集和相关的译码机制比复杂指令集计算机(CISC)要简单得多,其目标就是设计出一套能在高时钟频率下单周期执行,简单而有效地的指令集。RISC的设计重点在于降低处理器中指令执行部件的硬件复杂度,这是因为软件比硬件更容易提供更大的灵活性和更高的智能化,因此ARM具备了非常典型的RISC结构特性:
   (1)具有大量的通用寄存器;
   (2)通过装载/保存(load-store)结构使用独立的load和store指令完成数据在寄存器和外部存储器之间的传送,处理器只处理寄存器中的数据,从而可以避免多次访问存储器;
   (3)寻址方式非常简单,所有装载/保存的地址都只由寄存器内容和指令域决定;
   (4)使用统一和固定长度的指令格式。
    此外,ARM体系结构还提供:
   (1)每一条数据处理指令都可以同时包含算术逻辑单元(ALU)的运算和移位处理,以实现对ALU和移位器的最大利用;
   (2)使用地址自动增加和自动减少的寻址方式优化程序中的循环处理;
   (3)load/store指令可以批量传输数据,从而实现了最大数据吞吐量;
   (4)大多数ARM指令是可“条件执行”的,也就是说只有当某个特定条件满足时指令才会被执行。通过使用条件执行,可以减少指令的数目,从而改善程序的执行效率和提高代码密度。
      这些在基本RISC结构上增强的特性使ARM处理器在高性能、低代码规模、低功耗和小的硅片尺寸方面取得良好的平衡。
       从1985年ARM1诞生至今,ARM指令集体系结构发生了巨大的改变,还在不断地完善和发展。为了清楚地表达每个ARM应用实例所使用的指令集,ARM公司定义了7种主要的ARM指令集体系结构版本,以版本号V1~V7表示。
1.1.2 常用ARM处理器系列
      ARM公司开发了很多系列的ARM处理器核,应用比较多的是ARM7系列、ARM9系列、ARM10系列、ARM11系列、Intel的Xscale系列和MPCore系列,还有针对低端8位MCU市场最新推出的Cortex-M3系列,其具有32位CPU的性能、8位MCU的价格。
   1.CortexTM-M3处理器
      ARMCortexTM-M3处理器是一个面向低成本,小管脚数目以及低功耗应用,并且具有极高运算能力和中断响应能力的一个处理器内核。其问世于2006年,第一个推向市场的是美国LuminaryMicro半导体公司的LM3S系列ARM。
     CortexTM-M3处理器采用了纯Thumb2指令的执行方式,使得这个具有32位高性能的ARM内核能够实现8位和16位处理器级数的代码存储密度,非常适用于那些只需几K存储器的MCU市场。在增强代码密度的同时,该处理器内核是ARM所设计的内核中最小的一个,其核心的门数只有33K,在包含了必要的外设之后的门数也只为60K。这使它的封装更为小型,成本更加低廉。在实现这些的同时,它还提供性能优异的中断能力,通过其独特的寄存器管理并以硬件处理各种异常和中断的方式,最大程度的提高了中断响应和中断切换的速度。
      与相近价位的ARM7核相比,CortexTM-M3采用了先进的ARMv7架构,具有带分支预测功能的3级流水线,以NMI的方式取代了FIQ/IRQ的中断处理方式,其中断延迟最大只需12个周期(ARM7为24~42个周期),带睡眠模式,8段MPU(存储器保护单元),同时具有1.25MIPS/MHz的性能(ARM7为0.9MIPS/MHz),而且其功耗仅为0.19mW/MHz(ARM7为0.28mW/MHz),目前最便宜的基于Cortex-M3内核的ARM单片机售价为1美元,由此可见Cortex-M3系列是冲击低成本市场的利器,但性能比8位单片机更高。
   2.CortexTM-R4处理器
      CortexTM-R4处理器是首款基于ARMv7架构的高级嵌入式处理器,其目标主要为产量巨大的高级嵌入式应用方案,如硬盘,喷墨式打印机,以及汽车安全系统等等。
      CortexTM-R4处理器在节省成本与功耗上为开发者们带来了关键性的突破,在与其他处理器相近的芯片面积上提供了更为优越的性能。CortexTM-R4为整合期间的可配置能力提供了真正的支持,通过这种能力,开发者可让处理器更加完美的符合应用方案的具体要求。
      CortexTM-R4采用了90纳米生产工艺,最高运行频率可达400MHz,该内核整体设计的侧重点在于效率和可配置性。
      ARMCortexTM-R4处理器拥有复杂完善的流水线架构,该架构基于低耗费的超量(双行)8段流水线,同时带有高级分支预测功能,从而实现了超过1.6MIPS/MHz的运算速度。该处理器全面遵循ARMv7架构,同时还包含了更高代码密度的Thumb-2技术、硬件划分指令、经过优化的一级高速缓存和TCM(紧密耦合存储器),存储器保护单元,动态分支预测,64位的AXI主机端口,AXI从机端口,VIC端口等多种创新的技术和强大的功能。
   3.CortexTM-R4F处理器
     CortexTM-R4F处理器在CortexTM-R4处理器的基础上加入了代码错误校正(ECC)技术、浮点运算单元(FPU)以及DMA综合配置的能力,增强了处理器在存储器保护单元,缓存,紧密耦合存储器,DMA访问以及调试方面的能力。
   4.CortexTM-A8处理器
      CortexTM-A8是ARM公司所开发的基于ARMv7架构的首款应用级处理器,同时也是ARM所开发的同类处理器中性能最好、能效最高的处理器。从600MHz开始到1GHz以上的运算能力使CortexTM-A8能够轻易胜任那些要求功耗小于300mW的、耗电量最优化的移动电话器件;以及那些要求有2000MIPS执行速度的、性能最优化的消费者产品的应用。CortexTM-A8是ARM公司首个超量处理器,其特色是运用了可增加代码密度和加强性能的技术、可支持多媒体以及信号处理能力的NEONTM技术、以及能够支持JAVA和其他文字代码语言(byte-codelanguage)的提前和即时编译的Jazelle® RCT(Run-time Compilation Target运行时编译目标代码)技术。
      ARM最新的Artisan®Advantage-CE库以其先进的泄漏控制技术使CortexTM-A8处理器实现了优异的速度和能效。
      CortexTM-A8具有多种先进的功能特性,它是一个有序、双行、超标量的处理器内核,具有13级整数运算流水线,10级NEON媒体运算流水线,可对等待状态进行编程的专用的2级缓存,以及基于历史的全局分支预测;在功耗最优化的同时,实现了2.00MIPS/MHz的性能。它完全兼容ARMv7架构,采用Thumb2指令集,带有为媒体数据处理优化的NEON信号处理能力,JazelleRCJAVA加速技术,并采用了TrustZong技术来保障数据的安全性。它带有经过优化的1级缓存,还集成了2级缓存。众多先进的技术使其适用于家电以及电子行业等各种高端的应用领域。
   5.ARM7系列
      ARM7TDMI是ARM公司1995年推出的第一个处理器内核,是目前用量最多的一个内核。ARM7系列包括ARM7TDMI、ARM7TDMI-S、带有高速缓存处理器宏单元的ARM720T和扩充了Jazelle的ARM7EJ-S。该系列处理器提供Thumb16位压缩指令集和EmbeddedICEJTAG软件调试方式,适合应用于更大规模的SoC设计中。其中ARM720T高速缓存处理宏单元还提供8KB缓存、读缓冲和具有内存管理功能的高性能处理器,支持Linux和WindowsCE 等操作系统。
   6.ARM9系列
      ARM9系列于1997年问世,ARM9系列有ARM9TDMI、ARM920T和带有高速缓存处理器宏单元的ARM940T。所有的ARM9系列处理器都具有Thumb压缩指令集和基于EmbeddedICEJTAG的软件调试方式。ARM9系列兼容ARM7系列,而且能够比ARM7进行更加灵活的设计。   
      ARM926EJ-S发布于2000年,ARM9E系列为综合处理器,包括ARM926EJ-S和带有高速缓存处理器宏单元的ARM966E-S、ARM946E-S。该系列强化了数字信号处理(DSP)功能,可应用于需要DSP与微控制器结合使用的情况,将Thumb技术和DSP都扩展到ARM指令集中,并具有EmbeddedICE-RT逻辑(ARM的基于EmbeddedICEJTAG软件调试的增强版本),更好地适应了实时系统的开发需要。同时其内核在ARM9处理器内核的基础上使用了Jazelle增强技术,该技术支持一种新的Java操作状态,允许在硬件中执行Java字节码。
   7.ARM10系列
      ARM10发布于1999年,ARM10系列包括ARM1020E和ARM1022E微处理器核。其核心在于使用向量浮点(VFP)单元VFP10提供高性能的浮点解决方案,从而极大提高了处理器的整型和浮点运算性能,为用户界面的2D和3D图形引擎应用夯实基础,如视频游戏机和高性能打印机等。
   8.ARM11系列
      ARM1136J-S发布于2003年,是针对高性能和高能效的应用而设计的。ARM1136J-S是第一个执行ARMv6架构指令的处理器,它集成了一条具有独立的load-store和算术流水线的8级流水线。ARMv6指令包含了针对媒体处理的单指令多数据流(SIMD)扩展,采用特殊的设计以改善视频处理性能。
      ARM1136JF-S就是为了进行快速浮点运算,而在ARM1136J-S增加了向量浮点单元。
   9.Xscale
      Xscale处理器将Intel处理器技术和ARM体系结构融为一体,致力于为手提式通信和消费电子类设备提供理想的解决方案。并提供全性能、高性价比、低功耗的解决方案,支持16位Thumb指令和集成数字信号处理(DSP)指令。
战争      这帝国主义的女儿, 像个幽灵            在世界上飞旋。                                             ——马雅可夫斯基

63

主题

1959

帖子

4103

积分

超级贵宾

汇编语言不会编

威望
18
帅气
0
聪明
49
强壮
0
美丽
1
可爱
0
星沙
0
金钱
21400
 楼主| 发表于 2011-9-2 17:02:11 | 显示全部楼层

DS中ARM7与ARM9间的通信

摘自:www.fw211.com
作者:火精灵

NDS中ARM7与ARM9的分工比较明确,ARM7主要处理音频、无线通信、实时时钟等,ARM9主要处理视频等主要任务。要使得它们能够协同工作,那么就必须有一个比较有效的通信办法。从NDS的系统框图上看可以知道ARM7与ARM9的AHB总线通过FIFO连接,对于主存与游戏卡则通过EMI(外部总线接口)连接。这样我们就可以通过FIFO与主存来进行通信与数据交互了。接下来介绍4个寄存器:
4000180h - NDS9/NDS7 - IPCSYNC - IPC Synchronize Register (R/W)
Bit Dir Expl.
0-3 R Data input from IPCSYNC Bit8-11 of remote CPU (00h..0Fh)
4-7 - Not used
8-11 R/W Data output to IPCSYNC Bit0-3 of remote CPU (00h..0Fh)
12 - Not used
13 W Send IRQ to remote CPU (0=None, 1=Send IRQ)
14 R/W Enable IRQ from remote CPU (0=Disable, 1=Enable)
15-31 - Not used
同步寄存器,可以利用它来进行ARM7与ARM9的同步握手。
4000184h - NDS9/NDS7 - IPCFIFOCNT - IPC Fifo Control Register (R/W)
Bit Dir Expl.
0 R Send Fifo Empty Status (0=Not Empty, 1=Empty)
1 R Send Fifo Full Status (0=Not Full, 1=Full)
2 R/W Send Fifo Empty IRQ (0=Disable, 1=Enable)
3 W Send Fifo Clear (0=Nothing, 1=Flush Send Fifo)
4-7 - Not used
8 R Receive Fifo Empty (0=Not Empty, 1=Empty)
9 R Receive Fifo Full (0=Not Full, 1=Full)
10 R/W Receive Fifo Not Empty IRQ (0=Disable, 1=Enable)
11-13 - Not used
14 R/W Error, Read Empty/Send Full (0=No Error, 1=Error/Acknowledge)
15 R/W Enable Send/Receive Fifo (0=Disable, 1=Enable)
16-31 - Not used
FIFO控制寄存器,用来控制FIFO与读取FIFO的状态。
4000188h - NDS9/NDS7 - IPCFIFOSEND - IPC Send Fifo (W)
Bit0-31 Send Fifo Data (max 16 words; 64bytes)
发送FIFO地址,16个32bits的深度。
4100000h - NDS9/NDS7 - IPCFIFORECV - IPC Receive Fifo (R)
Bit0-31 Receive Fifo Data (max 16 words; 64bytes)
接收FIFO地址,16个32bits的深度。
在使用FIFO的时候我们最常用的是打开接收FIFO非空的中断请求,预先约定好数据消息的格式,并且设置好每个数据消息的回调函数,这样对方处理器通过 FIFO发送过来的数据消息就可以在本地产生非空的中断,从而调用本地的回调函数,实现了两个处理器的完美通信。主存后4M是可以用来系统调试与处理器间通信的,两个处理器可以约定某些固定地址来存放通信间的数据。
战争      这帝国主义的女儿, 像个幽灵            在世界上飞旋。                                             ——马雅可夫斯基
回复 支持 反对

使用道具 举报

63

主题

1959

帖子

4103

积分

超级贵宾

汇编语言不会编

威望
18
帅气
0
聪明
49
强壮
0
美丽
1
可爱
0
星沙
0
金钱
21400
 楼主| 发表于 2011-9-2 17:16:45 | 显示全部楼层

中科大课程中的ARM体系结构和指令集

中科大李曦老师的
嵌入式系统设计方法、工具与环境课程课程讲稿
http://staff.ustc.edu.cn/~llxx/embedded/index.html

ARM体系结构
http://staff.ustc.edu.cn/~llxx/embedded/slides/llxx6.pdf

ARM指令集
http://staff.ustc.edu.cn/~llxx/embedded/slides/llxx7.pdf
战争      这帝国主义的女儿, 像个幽灵            在世界上飞旋。                                             ——马雅可夫斯基
回复 支持 反对

使用道具 举报

63

主题

1959

帖子

4103

积分

超级贵宾

汇编语言不会编

威望
18
帅气
0
聪明
49
强壮
0
美丽
1
可爱
0
星沙
0
金钱
21400
 楼主| 发表于 2011-9-2 17:49:50 | 显示全部楼层
战争      这帝国主义的女儿, 像个幽灵            在世界上飞旋。                                             ——马雅可夫斯基
回复 支持 反对

使用道具 举报

63

主题

1959

帖子

4103

积分

超级贵宾

汇编语言不会编

威望
18
帅气
0
聪明
49
强壮
0
美丽
1
可爱
0
星沙
0
金钱
21400
 楼主| 发表于 2011-9-3 01:21:29 | 显示全部楼层

常用 ARM指令集及汇编 目录

一、 ARM处理器的寻址方式

二、指令集学习

(一)    ARM 指令集

1.  指令格式

2.  条件码

3. ARM 存储器访问指令

1)       LDR/ STR -加载 /存储指令

2)       LDM/ STM -多寄存器加载 /存储指令

3)       SWP -寄存器和存储器交换指令

4. ARM 数据处理指令

1)       数据传送指令

a)       MOV -数据传送指令

b)       MVN -数据非传送指令

2)       算术逻辑运算指令

a)       ADD -加法运算指令

b)       SUB -减法运算指令

c)       RSB- 逆向减法指令

d)       ADC -带进位加法指令

e)       SBC -带进位减法指令

f)       RSC -带进位逆向减法指令

g)       AND -逻辑“与”

h)       ORR -逻辑“或”

i)       EOR -逻辑“异或”

j)       BIC -位清除指令

3)       比较指令

a)       CMP -比较指令

b)       CMN -负数比较指令

c)       TST -位测试指令

d)       TEQ -相等测试指令

4)       乘法指令

a)       MUL - 32位乘法指令

b)       MLA - 32位乘加指令

c)       UMULL - 64位无符号乘法指令

d)       UMLAL - 64位无符号乘加指令

e)       SMULL - 64位有符号乘法指令

f)       SMLAL - 64位有符号乘加指令

5. ARM 分支指令

1)       B -分支指令

2)       BL -带连接的分支指令

3)       BX -带状态切换的分支指令

6. ARM 协处理器指令

1)       CDP -协处理器数据操作指令

2)       LDC -协处理器数据读取指令

3)       STC -协处理器数据写入指令

4)       MCR - ARM处理器到协处理器的数据传送指令

5)       MRC -协处理器到 ARM处理器的数据传送指令

7. ARM 杂项指令

1)       SWI -软中断指令

2)       MRS -读状态寄存器指令

3)       MSR -写状态寄存器指令

8. ARM 伪指令

1)       ADR -小范围的地址读取伪指令

2)       ADRL -中等范围的地址读取伪指令

3)       LDR -大范围的地址读取伪指令

4)       NOP -空操作伪指令

(二)    Thumb 指令集

1.  Thumb 指令集和 ARM指令集的区别

2. Thumb 存储器访问指令

1)       LDR/ STR -加载 /存储指令

2)       PUSH/ POP -寄存器入栈 /出栈指令

3)       LDMIA/ STMIA -多寄存器加载 /存储指令

3. Thumb 数据处理指令

1)       数据传送指令

a)       MOV -数据传送指令

b)       MVN -数据非传送指令

c)       NEG -数据取负指令

2)       算术逻辑运算指令

a)       ADD -加法运算指令

b)       SUB -减法运算指令

c)       ADC -带进位加法指令

d)       SBC -带进位减法指令

e)       MUL -乘法运算指令

f)       AND -逻辑“与”

g)       ORR -逻辑“或”

h)       EOR -逻辑“异或”

i)       BIC -位清除指令

j)       ASR -算术右移指令

k)       LSL -逻辑左移指令

l)       LSR -逻辑右移指令

m)       ROR -循环右移指令

3)       比较指令

a)       CMP -比较指令

b)       CMN -负数比较指令

c)       TST -位测试指令

4. Thumb 分支指令

1)       B -分支指令

2)       BL -带连接的分支指令

3)       BX -带状态切换的分支指令

5. Thumb 杂项指令

1)       SWI -软中断指令

6. Thumb 伪指令

1)       ADR -小范围的地址读取伪指令

2)       LDR -大范围的地址读取伪指令

3)       NOP -空操作伪指令
战争      这帝国主义的女儿, 像个幽灵            在世界上飞旋。                                             ——马雅可夫斯基
回复 支持 反对

使用道具 举报

63

主题

1959

帖子

4103

积分

超级贵宾

汇编语言不会编

威望
18
帅气
0
聪明
49
强壮
0
美丽
1
可爱
0
星沙
0
金钱
21400
 楼主| 发表于 2011-9-3 01:22:11 | 显示全部楼层

ARM指令集学习总结

基本不懂……

http://lionwq.spaces.eepw.com.cn/articles/article/item/18423

2008-03-05 09:48:31

ARM指令集比较简单,本文介绍ARM指令集中需要注意和不易理解的地方。

    一、ARM指令集是32位的,程序的启动都是从ARM指令集开始,包括所有异常中断都是自动转化为ARM状态,并且所有的指令都可以是有条件执行的。
   
    二、ARM指令集是Load/Store型的,只能通过Load/Store指令实现对系统存储器的访问,而其他的指令都是基于处理器内部的寄存器操作完成的,这和INTEL汇编是不同的,初学者很不易理解。
  
    三、指令的后缀:
    "S"  可选后缀,若指定S,则根据指令执行的结果更新CPSR中的条件码。很多初学着不知道怎么更新,若这条指令执行完以后,对ARM程序状态寄存器的条件码标志(N,Z,C,V)的影响。
    "! " 表示在完成数据操作以后,将更新基址寄存器,并且不消耗额外的时间。
         如:LDR R0, [R1, #4] 他相当于 R0 <- mem32[R1+4]
                                      R1 = R1+4;
    "^"  LDMFD R13!, (R0-R3, PC)^ //"^"表示一条特殊形式的指令。(在从存储器中装入PC的同时,CPSR也得到恢复)。

    四、#号后面加0x或&表示十六进制:#0xFF, #&FF
        #号后面加0b表示二进制。
        #号后面加0d表示十进制。   
*******************************************************************************

    五、立即数寻址
    每个立即数都是采用一个8位的常数循环右移偶数位间接得到。
    初学者不易理解:一个32位的指令不可能全部用来保存32位的立即数,所以从指令的编码格式上分析,在指令编码中只分配了12位来存储立即数,其中4位用来保存右循环值,8位用来保存一个常数,所以并不是每一个32位的立即数都是合法的。

    六、寄存器寻址
    ADD R3,R2,R1,LSR #2 //寄存器R1的内容右移了两位,但是注意本指令执行完毕以后R1的内容并不改变。

    七、前变址、自动变址和后变址
    1、前变址:LDR R0,[R1,#4]   //R1寄存器的内容先加4,然后执行操作,但操作完毕以后,R1的内容不变。
    2、自动变址:上面总结指令后缀时提到"!",表示自动变址(参考上面 三 )。
    3、后变址:LDR R0,[R1],#4   //先进行操作然后R1+4->R1,操作完毕后,R1 = R1+4。不需要"!"号。

    八、堆栈寻址
    一定要注意:堆栈操作总是要指定自动变址的,否则会覆盖以前保存的内容。
********************************************************************************

    九、乘法指令
    1、乘法指令不支持第二操作数为立即数。
    2、结果寄存器不能同时作为第一源寄存器。
        32位:MUL Rd,Rm,Rs
              MUL Rd,Rm,Rs  //Rd和Rm不能为同一寄存器
        64位:MUL RdHi,RdLo,Rm,Rs //RdHi、RdLo和Rm不能为同一寄存器,RdHi和RdLo不能为同一寄存器。

    十、跳转指令
    1、BL和BLX跳转是硬件自动将下一条指令地址保存到LR(R14)中,不需要自己写指令。
    2、当指令跳转到32MB地址空间以外时,将产生不可预料的结果。

    ARM的指令集比较简单,肯定还有其他需要注意的地方,欢迎网友们积极参与补充。
战争      这帝国主义的女儿, 像个幽灵            在世界上飞旋。                                             ——马雅可夫斯基
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|PMGBA ( 闽ICP备06006686号  

GMT+8, 2016-12-6 00:34 , Processed in 0.162036 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表