自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zyl910的专栏

优化技巧、硬件体系、图像处理、图形学、游戏编程、国际化与文本信息处理。主力博客:http://www.cnblogs.com/zyl910/

  • 博客(75)
  • 资源 (6)
  • 收藏
  • 关注

原创 SIMD函数整理:00 索引贴(2012-07-31更新)

作者:zyl910  关于SIMD(MMX、SSE、AVX)编程的资料一直很零散,于是我试图进行收集整理,便于随时翻阅学习。而且很多代码是直接用汇编写的,易读性差、难以重用,于是我决定将其统一改写为Intrinsics函数版。一、Instructions函数对照表  在使用Instructions函数时,很多时候会发现MSDN说的不详细,这时只有去翻阅Intel、AMD文档了。但I

2012-04-26 22:01:43 2165

翻译 [译] .NET 8 中的硬件内在函数(支持 Wasm 和 AVX-512)

它带来了沿着的大量新指令和硬件功能,包括支持16个额外的SIMD寄存器,专用掩码,以及一次操作512位数据。因此,可以利用此新功能的用户数量较少,但它可以为硬件带来的改进仍然很重要,并且值得支持数据繁重的工作负载。这允许暴露的API表面显著更小(减少超过3000个API),现有代码在很大程度上“只是工作”并利用较新的硬件支持而无需显式操作,并且希望支持AVX-512的用户不必学习新概念或以新方式编写代码。,简称Wasm,本质上是在浏览器中运行的代码,它允许比典型的解释型脚本支持更高的性能配置文件。

2024-04-13 22:25:28 12

原创 [C#] .NET8增加了Arm架构的多寄存器的查表函数(VectorTableLookup/VectorTableLookupExtension)

发现.NET8增加了Arm架构的多寄存器的查表函数(VectorTableLookup/VectorTableLookupExtension),这给编写SIMD向量化算法带来了方便。

2024-03-23 22:56:56 595

原创 发布 VectorTraits v2.0(支持 x86的Sse系列指令集等)

固定长度的数组”的原理比较简单,就是利用值类型的结构体的一些特点。且2.0版增加了浮点类型判断等多个函数,若仍然放在BitMath里,会使该类便的更大,不易维护。即原本1条指令就能寻址,但JIT只会编译为3条指令的,影响了性能。对于固定长度的向量类型(Vector128/Vector256),在v1.0版时只是提供了常用的向量方法。的地址计算,存在写法繁琐,很难利用“寄存器相对寻址”、“相对基址变址寻址”指令问题。当使用这2种相对寻址时,能在同一指令内就能完成“地址计算”与实际的“数据搬运”。

2024-03-17 17:47:15 584

原创 发布 VectorTraits v1.0,它是 C# 下增强SIMD向量运算的类库

本库为向量类型提供了许多重要的算术方法(如 Shift, Shuffle, NarrowSaturate)及常数, 使您能更方便的编写跨平台的SIMD运算代码。它充分利用了 X86、Arm架构的内在函数实现硬件加速,且能够享受内联编译优化。

2023-09-08 00:32:53 637

原创 [C] 跨平台使用TCHAR——让Linux等平台也支持tchar.h,解决跨平台时的格式控制字符问题,多国语言的同时显示(兼容vc/gcc/bcb,支持Windows/Linux/Mac)

作者:zyl910  将Windows程序移植到Linux等平台时,经常会遇到tchar.h问题与字符串的格式控制字符问题(char串、wchar_t串、TCHAR串混合输出)。本文探讨如何解决这些问题。一、背景1.1 历史  传统的C程序使用char字符串,采用ANSI+DBCS方案来支持当地语言,不能实现多国语言同时显示。  当年微软在设计Windows NT时考虑到国

2013-01-17 21:50:34 13976 4

原创 [C] 跨平台使用Intrinsic函数范例3——使用MMX、SSE2指令集 处理 32位整数数组求和

作者:zyl910。  本文面对对SSE等SIMD指令集有一定基础的读者,以32位整数数组求和为例演示了如何跨平台使用MMX、SSE2指令集。支持vc、gcc编译器,在Windows、Linux、Mac这三大平台上成功运行。 一、关键讲解  前文(http://www.cnblogs.com/zyl910/archive/2012/10/22/simdsumfloat.html)演

2012-10-26 21:23:44 10464

原创 [C] 跨平台使用Intrinsic函数范例2——使用SSE2、AVX指令集 处理 双精度浮点数组求和

作者:zyl910。  本文面对对SSE等SIMD指令集有一定基础的读者,以双精度浮点数组求和为例演示了如何跨平台使用SSE2、AVX指令集。支持vc、gcc编译器,在Windows、Linux、Mac这三大平台上成功运行。一、关键讲解  前文(http://www.cnblogs.com/zyl910/archive/2012/10/22/simdsumfloat.html)演示

2012-10-26 18:06:18 5691

原创 [C] 跨平台使用Intrinsic函数范例1——使用SSE、AVX指令集 处理 单精度浮点数组求和(支持vc、gcc,兼容Windows、Linux、Mac)

作者:zyl910。  本文面对对SSE等SIMD指令集有一定基础的读者,以单精度浮点数组求和为例演示了如何跨平台使用SSE、AVX指令集。因使用了stdint、zintrin、ccpuid这三个模块,可以完全避免手工编写汇编代码,具有很高可移植性。支持vc、gcc编译器,在Windows、Linux、Mac这三大平台上成功运行。一、问题背景  最初,我们只能使用汇编语言来编写SI

2012-10-22 22:28:17 6925 1

原创 [C] zintrin.h : 智能引入intrinsic函数。支持VC、GCC,兼容Windows、Linux、Mac OS X

作者:zyl910。  现在很多编译器支持intrinsic函数,这给编写SSE等SIMD代码带来了方便。但是各个编译器略有差异,于是我编写了zintrin.h,智能引入intrinsic函数。一、各种编译器的区别1.1 Visual C++(Windows)  最早支持intrinsic函数的VC编译器是VC 6.0。它在装上Visual Studio 6.0 Service

2012-09-23 23:19:35 6800

原创 ccpuid:CPUID信息模块。范例:显示所有的CPUID信息

作者:zyl910  关于获取各种CPUID信息,我之前积累了不少代码,现在决定将它们封装在一个模块中,方便代码复用。  其次,前面只是介绍了CPUID的一些常用功能,而Intel、AMD的手册中定义了大量的CPUID功能。所以我希望有一个程序能按照功能号顺序,依次显示所有的CPUID信息。这样就能很方便的与Intel、AMD的手册进行对照,有助于学习与理解。一、模块设计  最

2012-07-11 16:47:40 9499

原创 [VC] 检测AVX系列指令集的支持级别(AVX、AVX2、F16C、FMA、FMA4、XOP)

从2011年的Sandy Bridge微架构处理器开始,现在支持AVX系列指令集的处理器越来越多了。本文探讨如何用VC编写检测AVX系列指令集的程序,并利用了先前的CPUIDFIELD方案。一、AVX系列指令集简介  SSE5 指令:SSE5 是一个纸面上的指令集,并没有最终实现,AMD 在 2007 年 8 月公布 SSE5 指令集规范,在 2009 年 5 月 AMD 推出了 XOP,

2012-07-04 16:07:52 13601 1

原创 [VC] CPUIDFIELD:CPUID字段的统一编号、读取方案。范例:检查SSE4A、AES、PCLMULQDQ指令

除了基本的MMX和SSE系列指令集外,x86体系还有其他扩展指令集,例如SSE4A、AES、PCLMULQDQ等,它们也可以利用CPUID指令来检测。但是,这些指令集细碎杂多。如果像以前那样分别编写检测函数的话,那工作量太大,不值得。而且大量的函数名也会给使用带来麻烦。于是文篇探讨如何设计一套通用的检测方案。零、指令简介  SSE4A指令:是AMD提出的,最早出现在2007年的K10微

2012-06-29 14:48:06 3264

原创 如何在各个版本的VC及64位下使用CPUID指令

前面我们探讨了在16位的DOS实模式下使用CPUID指令(http://www.cnblogs.com/zyl910/archive/2012/05/14/dos16_getcpuid.html)。而现在64位Windows系统已经很流行了,在32/64位模式下如何使用CPUID呢?于是本文介绍了如何在各个版本的VC及64位下使用CPUID指令。一、推荐使用__cpuid、__cpuidex等

2012-05-21 18:05:24 6113

原创 使用GetLogicalProcessorInformation获取逻辑处理器的详细信息(NUMA节点数、物理CPU数、CPU核心数、逻辑CPU数、各级Cache)

现在多核处理器已经很普及了,市场主流是双核处理器,还有4核、8核等高端产品。而且Intel推广了超线程技术(Hyper-Threading Technology, HTT),可以将一个物理核心模拟为两个逻辑处理器。这一切使得“CPU数量”这一概念变得复杂起来,对于软件开发人员来说,希望能获得物理CPU数、CPU核心数、逻辑CPU数等详细信息。  在Windows平台,可以调用GetLogica

2012-05-08 18:13:45 10916 1

原创 SIMD函数整理:01 《PC平台新技术MMX(上册):开发编程指南》第8章 MMX编码技术

一、来源  来源:《PC平台新技术MMX(上册):开发编程指南》第8章 MMX编码技术  书籍信息——http://e.360buy.com/30027396.htmlPC平台新技术MMX(上册):开发编程指南作 者: 吴乐南 编 出 版 社: 东南大学出版社 ISBN:9787810502528出版时间:1997-10-01页 数:149字 数:23700

2012-04-26 22:22:22 2392

原创 SIMD(MMX/SSE/AVX)变量命名规范心得

当使用Intrinsics函数来操作SIMD指令集(MMX/SSE/AVX等)时,会面对不同长度的SIMD数据类型,其中又分为多种紧缩格式。为此,我设计了一套SIMD变量命名规范,可以有效的提高代码的可读性。一、SIMD数据类型简介  SIMD数据类型有——__m64:64位紧缩整数(MMX)。__m128:128位紧缩单精度(SSE)。__m128d:128位紧缩双精度(SS

2012-04-23 17:47:46 4329 1

原创 AVX指令集中的32种浮点比较关系详解(NaN、无序、有序等)

在传统印象中,数字的比较关系只有6种。但在AVX指令集中,Intel一下给出了32种浮点比较谓词,详见下图——(Intel手册:Table 3-9. Comparison Predicate for VCMPPD and VCMPPS Instructions)  为什么会有这么多种比较谓词呢?我为此困惑困惑了很久。  直到最近翻阅了不少资料后,才终于将它们弄懂了。 一、浮

2012-04-19 16:37:41 3245

原创 深入探讨用位掩码代替分支(9):测试成绩总结

一、测试结果汇总  将前面的测试结果进行汇总,按照三点取中方式筛选结果,整理为表格(单位是毫秒,数值越小越好)——测试f0_iff1_minf2_negf3_sarf4_mmxf5_sseVC6 on 32bit2016206371967237.525.7VC6 on 64bit20282075

2012-04-13 17:29:17 3169 12

原创 深入探讨用位掩码代替分支(8):SSE指令集速度测试

在上一篇测试了MMX指令集,这次我们来测试SSE指令集。说的更精确一点,是测试SSE2指令集。  本篇致力于解决以下问题——1.SSE/SSE2指令集是什么?2.如何阅读Intel/AMD的手册?3.如何运用SSE指令集?如何将MMX代码升级为SSE代码。4.如何在VC++6.0这样的高级语言编译器中使用SSE指令集?一、简介  1999 年 Intel 推出了第 1

2012-04-12 22:30:16 3145

原创 深入探讨用位掩码代替分支(7):MMX指令集速度测试

前面我们测试了高级语言做饱和处理的性能。其实,对于这样的大批量数据处理,使用SIMD(Single Instruction Multiple Data,单指令多数据流)技术能极大的提高性能。MMX指令集是目前x86平台上覆盖最广的SIMD指令集,于是本文对它进行探讨。  本文致力于解决以下问题——1.MMX指令集是什么?2.如何阅读Intel/AMD的手册?2.如何运用MMX指令集

2012-04-09 23:08:54 2453

原创 深入探讨用位掩码代替分支(6):VB6速度测试

前面我们测试了C系列语言,验证了位掩码算法的确实性能不错。那么对于Basic系列语言,该算法的效率怎样呢?于是本文对此进行探讨。  VB.Net与C#一样,也是由.Net虚拟机执行的,没有多大的测试价值。所以我决定测试VB6。一、移植要点  VB6的功能与C系列语言差很多。很多地方需要换另一种方法去实现,甚至不能实现。  要点有——1.VB6不支持控制台程序,只支持窗口程序。所

2012-03-30 16:53:32 4009 1

原创 深入探讨用位掩码代替分支(5):C#2010速度测试

前面我们测试了C语言这样纯编译型语言。那么对于像C#这样由虚拟机执行的语言,“位掩码代替分支”法是否也有效果呢?于是本文对此进行探讨。一、移植要点  C#的语法与C语言很相像,多数代码可以直接用,但要注意以下几点。1.1 unsafe——不安全上下文  C#虽然支持指针,但必须在unsafe——不安全上下文 中才能使用。  要使用unsafe,必须先配置项目属性,允许不安全代码

2012-03-29 17:15:48 2102

原创 深入探讨用位掩码代替分支(4):VC2010速度测试

前面我们用VC6测试了位掩码代替分支的速度。VC6是1998年发售的,离现在有14年了。在14年里,Intel与AMD的CPU都换了好几套微架构了,VC6编译器很可能无法充分发挥它们的性能。而且,从2003年AMD推出了64位处理器开始,现在64位系统越来越普及,我们希望测试64位下的性能。  于是选择最新的VC系列编译器——Visual C++ 2010,它是2010年发售的,支持x64平台

2012-03-28 16:41:25 1667

原创 深入探讨用位掩码代替分支(3):VC6速度测试

wuhanbingwhdx提到了数据相关也会影响流水线(http://blog.csdn.net/zyl910/article/details/1330614)。  他的说法是有一定道理的。但是,在很多时候我们并不仅仅处理一个数值。比如将循环展开,在内循环处理2个或更多个的数值。而现代编译器面对循环展开时,在编译优化操作中会调整指令顺序,错开有相关性指令。因现代处理器支持超标量,这样的指令顺序

2012-03-27 15:51:13 1568

原创 深入探讨用位掩码代替分支(2):汇编代码分析

查看编译器生成的汇编代码,有助于我们分析程序的性能。1 让VC6输出编译的汇编代码  用VC6打开前一篇文章(http://blog.csdn.net/zyl910/article/details/7345655)的工程“noifCheck.dsw”。  首先需要配置项目设置——1.点击菜单栏 “工程”->“Project Settings”打开“Project Settings”

2012-03-21 15:20:56 1482 2

原创 深入探讨用位掩码代替分支(1):利用带符号移位生成掩码

几年前我写了一篇“优化分支代码——避免跳转指令堵塞流水线”(http://blog.csdn.net/zyl910/article/details/1330614)。因当时是整理笔记,有些粗略。这几年又有了新的心得,故决定深入探讨,顺便回答网友评论。  housisong(http://blog.csdn.net/housisong)提到了用利用带符号移位生成掩码——(假设n是32bit有

2012-03-12 17:09:22 2340 2

原创 [VC6] 检查MMX和SSE系列指令集的支持级别(最高SSE4.2)

参考文献——《Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 2 (2A, 2B & 2C): Instruction Set Reference, A-Z》. December 2011.http://www.intel.com/content/www/us/en/architecture-an

2012-03-01 22:45:06 2713

原创 Intrinsics头文件与SIMD指令集、Visual Studio版本对应表

File:Intrinsics头文件描述:指令集描述VS:Visual Studio版本号VisualStudio:Visual Studio版本名File描述VSVisualStudiointrin.hAll Architectures8.02005mmintrin.hMMX intrinsics6.06

2012-02-28 22:35:56 2566

原创 [x86]SIMD指令集发展历程表(MMX、SSE、AVX等)

自1996年的MMX指令集以来,Intel和AMD不断为x86体系添加新的SIMD指令集。时至2012年,Intel的Ivy Bridge即将发布,这16年来SIMD指令集有了哪些发展呢?于是我决定整理一份SIMD指令集的发展历程表。通过阅读Intel和AMD的手册,以及搜索网上资料,我初步完成了这项工作。表格如下——指令集条DateICPUIDateA

2012-02-26 19:40:23 3006

原创 VC 64位程序开发心的——获得程序位数和操作系统位数

如今64位系统越来越流行了,对于软件开发人员来说,掌握64位开发技术将会有更好的发展空间。而且经过这几年的发展,64位开发工具也成熟了,例如Visual Studio 2010。  关于如何配置64位平台,MSDN上有详细的介绍——http://msdn.microsoft.com/zh-cn/library/9yb4317s.aspx如何:针对 64 位平台配置 Visual C++

2012-02-19 22:46:29 2794 1

翻译 IVY Bridge : There's more than 22nm(IVB的新指令)

今天在百度上看到一则消息——http://tieba.baidu.com/p/1362181987IVY Bridge : There's more than 22nmI named this title...this is a information that were said to be confirmed on Intel forums"• Two instruct

2012-01-12 12:41:17 990

原创 四探C#类与结构体究竟谁快——跨程序集(assembly)调用

前面的三次测试都是在同一个项目内的,既处于同一个程序集。那么,跨程序集调用会怎么样呢?因为为了保证可维护性,我们会把一些常用操作封装到类库中去。然后实际项目开发时,引用该类库,使得解决方案中存在多个项目。编译完成后,将会是一个主要的exe和若干个dll文件,主exe程序集中的

2011-10-01 23:23:38 1399 2

原创 csdn经常卡,在博客园开了博客

csdn经常卡,在博客园开了博客——http://www.cnblogs.com/zyl910 以后一般在那边更新。只有重要的技术文章才会也发到这边。

2011-09-25 21:48:12 1230

原创 三探C#类与结构体究竟谁快——MSIL(微软中间语言)解读

上次我分别测试了类与结构体(http://blog.csdn.net/zyl910/article/details/6788417)、密封类(http://blog.csdn.net/zyl910/article/details/6793908)的函数调用速度评测。现在进行进一步

2011-09-24 12:30:12 1553

原创 再探C#类与结构体究竟谁快——考虑栈变量、栈分配、64位整数、密封类

上次我对C#类与结构体做了一次速度评测(http://blog.csdn.net/zyl910/article/details/6788417)。经过一段时间思索,发现还可以进一步探讨——第一、栈变量。上次的“硬编码”,是访问类中的静态变量的。若改为访问函数中的栈变量,性能会

2011-09-20 22:17:57 1426 1

原创 C#类与结构体究竟谁快——各种函数调用模式速度评测

以前我一直有个疑惑——在C#中,究竟是类(class)比较快,还是结构体(struct)比较快?当时没有深究。最近我遇到一个难题,需要将一些运算大的指针操作代码给封装一下。原先为了性能,这些代码是以硬编码的形式混杂在算法逻辑之中,不但影响了算法逻辑的可读性,其本身的指针操

2011-09-19 00:48:22 7397 14

原创 【软件发布】临摹帖(zDrawHelp) V1.1(画像素图的辅助工具)

临摹帖(zDrawHelp) V1.1简介~~~~  临摹帖(zDrawHelp)是一个画像素图的辅助工具。  它可以使一副图片在所有窗口的前面并半透明,而且最奇妙的是——鼠标操作能穿透该图片,直接操作下面的绘图软件。  绿色软件,无需安装,解压后直接双击

2011-08-21 21:50:45 4087 3

原创 【软件发布】zDrawHelp V1.0(画像素图的辅助工具)

zDrawHelp V1.0简介~~~~  zDrawHelp是一个画像素图的辅助工具。  它可以使一副图片在所有窗口的前面并半透明,而且最奇妙的是——鼠标操作能穿透该图片,直接操作下面的绘图软件。  运行环境:.Net Framework 2.0。Win

2011-08-15 16:04:25 3748 2

原创 [Color]灰度系数与网点增大

File:      StudyDotGain.txtName:      灰度系数与网点增大Author:    zyl910Version:   V1.0Updata:    2007-7-20  在PhotoShop的颜色设置对话框中,会发现“Dot Gain”这个词语经常出现,如在“颜色设置”对话框中的“灰色”与“专色”,与“自定 CMYK”对框中的“网点增大”。尤其是在“灰色”与“专

2007-07-20 13:15:00 4355 2

TWAIN Specification Version 2.3

最新的 TWAIN 2.3 规范。 TWAIN Version 2.3 Released November 21, 2013 TWAIN.H is unified, with one header file supporting Windows, Linux and Mac OS X, bringing full support for TWAIN 2.x to Mac OS X for the first time. Printer functionality is significantly expanded Clarification of driver startup versus driver default values, and the proper effect of the MSG_RESET and MSG_RESETALL operations. A new image meta-data value that a driver can report to an application A section detailing the best coding practices for application and driver writers. Additional tests for the TWAIN Self-Certification system, and a note that TWAIN Self-Certification applications can now be registered on the TWAIN Working Group website.

2015-09-22

[源代码]再探C#类与结构体究竟谁快

[源代码]再探C#类与结构体究竟谁快——考虑栈变量、栈分配、64位整数、密封类

2011-09-20

[测试程序exe]再探C#类与结构体究竟谁快

[测试程序exe]再探C#类与结构体究竟谁快——考虑栈变量、栈分配、64位整数、密封类

2011-09-20

[源代码]C#类与结构体究竟谁快

[源代码]C#类与结构体究竟谁快——各种函数调用模式速度评测 详见—— http://blog.csdn.net/zyl910/article/details/6788417 C#类与结构体究竟谁快——各种函数调用模式速度评测

2011-09-19

[测试程序exe]C#类与结构体究竟谁快

[测试程序exe]C#类与结构体究竟谁快——各种函数调用模式速度评测 详见—— http://blog.csdn.net/zyl910/article/details/6788417 C#类与结构体究竟谁快——各种函数调用模式速度评测

2011-09-19

zDrawHelp V1.0(画像素图的辅助工具)

zDrawHelp V1.0 作者:zyl910 邮箱:[email protected] Blog:http://blog.csdn.net/zyl910 简介 ~~~~   zDrawHelp是一个画像素图的辅助工具。   它可以使一副图片在所有窗口的前面并半透明,而且最奇妙的是——鼠标操作能穿透该图片,直接操作下面的绘图软件。   运行环境:.Net Framework 2.0。Windows 2000/2003/xp/vista/win7。 操作指南 ~~~~~~~~   使用方法—— 1.启动绘图软件(如Photoshop)。进行编辑,放大到合适尺寸,准备画像素图。 2.启动zDrawHelp。 3.在zDrawHelp上点击鼠标右键,弹出快捷菜单。点击“打开图片”加载图片。 4.默认的不透明度是100%。您可以在右键菜单中的“不透明度”子菜单中调整不透明度(一般60%比较合适)。 5.图片打开后,默认是自适应缩放模式的。您可以在右键菜单中的“缩放”子菜单中调整缩放倍数。 6.拖曳鼠标左键移动窗口,使其位于绘图软件上方。再拖曳鼠标右键移动窗口内的图片,使其与绘图软件中的欲编辑区域吻合。 7.摆好位置后,点击右键菜单中的“永在顶层”。这样zDrawHelp就永在顶层,并且鼠标操作能穿透zDrawHelp,直接操作下面的绘图软件。 8.现在就可以参考图片进行像素图编辑了。若编辑时需要隐藏zDrawHelp的半透明窗口,可以使用快捷键Ctrl+F11隐藏,再按Ctrl+F11可以恢复显示。 问:如何退出zDrawHelp的穿透模式? 答:在任务栏右下角的任务托盘区找到zDrawHelp的托盘图标,点击鼠标右键弹出快捷菜单,再点击“永在顶层”,退出永在顶层模式与穿透模式。   解释—— 穿透模式 = 永在顶层 + 半透明(不透明度小于100%) 若您将不透明度设为100%,也可退出穿透模式。 这是顺序无关的。您也可以先设为“永在顶层”再调整“不透明度”进入穿透模式。 操作参考 ~~~~~~~~   操作说明—— 拖曳鼠标左键:移动窗口。 拖曳鼠标右键:移动窗口内的图片。 右键菜单:许多高级功能。如:打开图片、缩放、高级、调整窗口大小、永在顶层、不透明度、显示、隐藏、退出。   全局热键—— Ctrl+F11:显示/隐藏切换。 更新历史 ~~~~~~~~ [2011-08-13] V1.0 V1.0发布

2011-08-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除