自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(0)
  • 资源 (51)
  • 收藏
  • 关注

空空如也

VCpp6sp6_虎年献礼.part1

真正的集成了SP6的VC。 MSDEV.exe 版本号:6.0.9782.2 修改日期:2004-2-27 0:00 基于原版制作,保留原版的所有功能。 添加了psapi和iphelp库,以免写小程序的时候还要另外找 增加了几个模版,包括汇编模版,驱动模版。可以直接用来写汇编程序并带源码调试。 集成VAX,WndTabs插件。支持更多的关键字高亮。 在安装目录下有个mytools文件夹,里面放的是我写的VC文件关联助手(用来给绿色版的VC添加文件关联,其关联是和原版的关联一样的,关联的类型包括.dsw,.dsp,.rc,.h,.c,.cpp),还有一个是来自www.cctry.com的VC辅助工具,能设置的地方很多,是个不错的辅助工具。 添加了多个工程向导,包括汇编(可直接编译)和驱动向导(需要自己安装DDK) 更多功能,还是自己下载体验吧。。。

2010-01-03

VCpp6sp6_Plus_元旦特别版.part2

基于原版制作,保留原版的所有功能。 添加了psapi和iphelp库,以免写小程序的时候还要另外找 增加了几个模版,包括汇编模版,驱动模版。可以直接用来写汇编程序并带源码调试。 集成VAX,WndTabs插件。支持更多的关键字高亮。 在安装目录下有个mytools文件夹,里面放的是我写的VC文件关联助手(用来给绿色版的VC添加文件关联,其关联是和原版的关联一样的,关联的类型包括.dsw,.dsp,.rc,.h,.c,.cpp),还有一个是来自www.cctry.com的VC辅助工具,能设置的地方很多,是个不错的辅助工具。 添加了多个工程向导,包括汇编(可直接编译)和驱动向导(需要自己安装DDK) 更多功能,还是自己下载体验吧。。。

2010-01-02

VCpp6sp6_Plus_元旦特别版.part1

基于原版制作,保留原版的所有功能。 添加了psapi和iphelp库,以免写小程序的时候还要另外找 增加了几个模版,包括汇编模版,驱动模版。可以直接用来写汇编程序并带源码调试。 集成VAX,WndTabs插件。支持更多的关键字高亮。 在安装目录下有个mytools文件夹,里面放的是我写的VC文件关联助手(用来给绿色版的VC添加文件关联,其关联是和原版的关联一样的,关联的类型包括.dsw,.dsp,.rc,.h,.c,.cpp),还有一个是来自www.cctry.com的VC辅助工具,能设置的地方很多,是个不错的辅助工具。 添加了多个工程向导,包括汇编(可直接编译)和驱动向导(需要自己安装DDK) 更多功能,还是自己下载体验吧。。。

2010-01-02

VC6文件关联助手 by cntrump

专为VC6而制作的文件关联工具,支持.dsw,.dsp,.rc,.h,.c,.pp的格式关联,关联的效果和原版的VC6一样。 本人的拙作,就不收资源分了。

2009-12-31

Smart spell-checker for Visual Studio

智能拼写检查VC中的代码。 附带源码。 收1分,意思意思,回复后即可补分回来。

2009-12-31

Line Counter

检查代码行数,包括注释,空行,让你更了解自己的代码。 附带源代码。 收1分,意思一下,回复后即可补回来.

2009-12-31

NuMega.BoundsChecker.for.VisualC++.V6.5.zip

针对Visual C++6.0应用程序的最为全面的错误检测工具。BoundsChecker 能自动指出静态,堆栈内存错误和资源泄漏问题。BoundsChecker 能够校验最新的 Windows APIs,包括 ActiveX, DirectX, OLE/COM, ODBC等等。能够发现与 Windows 平台兼容性。 只收1分,目的是下载后回复~_~

2009-12-31

USB Safely Remove 4.1.5.806 多国语言版

USB Safely Remove是一个可以安全删除USB设备的系统工具. 它使用方便, 可以删除任何USB设备, 可以自动停止设备而不必将其拔出. 该软件还提供设置热键, 防止设备假死, 定制设备显示名称, 插入设备自启动程序等功能.fworld觉得在Vista下特别需要这样的工具,在vista系统下会常常遭遇U盘或者内存卡无法停止工作。直接拔出又怕造成数据损坏。USB Safely Remove正好可以帮忙解决问题。

2009-11-04

Skin++ For Visual Studio.Net 3.1.1

支持的开发语言 VC#.Net 2002/2003/2005 VB.NET 2002/2003/2005 VC.NET 2002/2003/2005 支持的操作系统 Windows Vista Wndows NT4.0/2000/XP/2003 Windows 95/98/98SE/Me 版本信息 当前版本:3.1.1.0 文件大小:17.6MB 更新日期:2007-01-14 下载次数:110554 软件概述 作为勇进软件的旗帜性产品Skin++ For VS.Net 版,具有简单易用、嵌入系统方便、运行稳定、兼容性强等特点。提供了所有标准控件的Skin解决方案,可以完美地设计程序每部分的界面细节,完全做到了所见即所得的界面效果,满足了目前所有的VS.Net应用程序界面开发需求。本产品彻底改变了VS.Net开发界面难的问题,使用本产品可以对您已有的系统进行方便快捷的界面改造,也可以在系统开发的初期,极大地提高系统开发的进度,并得到满意的界面效果。 Skin++ For .Net全面支持Visual Studio 2002、Visual Studio 2003、Visual Studio 2005。支持Visual Studio 2005最新标准控件(MenuStrip、ToolStrip、StatusStrip、Splitter等)。在该版本中,效率上有了显著的提升。支持的语言版本更全面更深入。

2009-09-23

[分享]res2obj

可以把.res转换为.obj文件的小程序,网络上不好找到,现在找到了,备份一个,呵呵~~ 命令行工具,使用起来很简单适合使用汇编的朋友.和MASM包里的Cvtres.exe可不一样哟,试试就知道了

2009-09-21

IpHelper API

喜欢用VC6的朋友不用担心找不到这几个文件了,以前我了经常要在网上找,现在传上来备份一份。方便大家。。

2009-05-14

vclskin 4.42最新修正版

VCLSkin 4.42 好用的delphi皮肤控件

2008-10-02

去除空行小工具

以前学VB的小作,大家不要笑呀<br>可以处理多个文件。

2007-08-31

C++程序优化辅助工具

使用很简单,效果很明显

2007-08-31

C-Free 4.0Beta2

C-Free 4.0Beta2大家都用过吧,从官方下载的版本已经过期了,在这里我附上个自己做的补丁,安装完后给主程序打上补丁就能解除时间限制了。在压缩包里有从官方下载的C-Free 4.0Beta2和我自己做的补丁。希望大家使用愉快!

2007-08-26

Delphi7.Second.Edition.v7.2.part-5

这是老外做的版本,也是我最喜欢的版本

2007-08-16

Delphi7.Second.Edition.v7.2.part-4

这是老外做的版本,也是我最喜欢的版本

2007-08-16

Delphi7.Second.Edition.v7.2.part-3

这是老外做的版本,也是我最喜欢的版本

2007-08-16

Second.Edition.v7.2.part-2

这是老外做的版本,也是我最喜欢的版本

2007-08-16

Delphi.7.Second.Edition.v7.2.part-1

这是老外做的版本,也是我最喜欢的版本

2007-08-16

把脉 VC++ (完整光盘源码)

提取自原版光盘,并删除了 .ncb .suo .user 这三类无用的文件。 使用 7zip 极限压缩,所以体积不到 2M。 保证源代码是完整的。

2011-05-07

Win32_编程进阶-打造自己的标准控件

创建自己的控件源代码。 如何创建自己的控件类。 如何与父窗口交互消息。

2011-02-15

Alpha Controls

Delphi 下最炫的界面库。 已注册版本。

2011-01-20

Intel 指令参考

Intel 指令参考 包含: IA-32 指令 英特尔(R) 安腾(R) 处理器指令 英特尔 XScale® 技术指令

2010-12-24

Windows 下的 Makefile 编写(三)推理规则

Windows 下的 Makefile 编写(三)推理规则

2010-12-24

Windows 下的 Makefile 编写(二)宏和预处理的简单示例

Windows 下的 Makefile 编写(二)宏和预处理的简单示例

2010-12-23

Windows 下的 Makefile 编写(一)Makefile的基本规则

Windows 下的 Makefile 编写(一)Makefile的基本规则

2010-12-23

网页重命名小工具 (源码)

有时候会用blog backup来保存一些博客文章,做为以后的学习参考资料,但是保存下来的文章是以数字命名的,查找起来不太方便。于是做了这个小工具,可以以网页的标题名做为文件名重命名网页文件。 对于标题中所包含的不可用作文件名的标识符,会以空格替换。

2010-07-13

ResEdit 1.4.13.0 中文修正版

一款新的资源编辑软件。 官方网站:www.resedit.net 官方提供的语言文件中,简体中文的质量非常差。 我对照VS中的资源编辑做了修改。方便大家的使用。

2010-07-03

ADO 示例 WTL实现

ADO操作的示例程序,使用WTL作为框架。

2010-07-01

WinSock 2.x 编程(1) 从简单的例子开始

WinSock 2.x 编程(1) 从简单的例子开始 作者:cntrump blog:http://hi.baidu.com/cntrump 发布在: http://hi.baidu.com/cntrump/blog/item/c913d01e2e3dc9f81ad57661.html

2010-05-19

三十分钟掌握STL doc文档

三十分钟掌握STL 这是本小人书。原名是《using stl》,不知道是谁写的。不过我倒觉得很有趣,所以化了两个晚上把它翻译出来。我没有对翻译出来的内容校验过。如果你没法在三十分钟内觉得有所收获,那么赶紧扔了它。文中我省略了很多东西。心疼那,浪费我两个晚上。 译者:kary contact:[email protected] STL概述 STL的一个重要特点是数据结构和算法的分离。尽管这是个简单的概念,但这种分离确实使得STL变得非常通用。例如,由于STL的sort()函数是完全通用的,你可以用它来操作几乎任何数据集合,包括链表,容器和数组。 要点 STL算法作为模板函数提供。为了和其他组件相区别,在本书中STL算法以后接一对圆括弧的方式表示,例如sort()。 STL另一个重要特性是它不是面向对象的。为了具有足够通用性,STL主要依赖于模板而不是封装,继承和虚函数(多态性)——OOP的三个要素。你在STL中找不到任何明显的类继承关系。这好像是一种倒退,但这正好是使得STL的组件具有广泛通用性的底层特征。另外,由于STL是基于模板,内联函数的使用使得生成的代码短小高效。 提示 确保在编译使用了STL的程序中至少要使用-O优化来保证内联扩展。 ....

2010-03-11

高质量C/C++编程指南 DOC版本

高质量C/C++编程指南 已经做好目录导航可方便阅读。

2010-03-07

Visual Leak Detector

Visual Leak Detector 免费开源的内存泄漏工具。 共有三个版本且包含源代码。 ver 1.0 ver 1.9d ver 1.9h

2010-02-16

h2inc C头文件转换为masm汇编头文件

README.TXT File Release Notes for the Microsoft(R) MASM Professional Development System, Version 6.14 (C) Copyright 1997, Microsoft Corporation. All rights reserved. This document contains release notes for the Microsoft MASM Professional Development System, version 6.14. The information in this document and in the Microsoft Advisor (on-line help) is more up-to-date than that in the manuals. The printed documentation for MASM 6.11 has not changed from MASM 6.10. MASM 6.14 is being released as a patch for users of MASM 6.11. The MASM 6.11 installation disks provide several important files that include new or updated information for this release. They are: README.TXT =====> Contains patch installation instructions, documentation errata, system requirements, information and tips on using MASM 6.1x, and known assembler bugs. CV.TXT =========> Contains release notes for Microsoft CodeView(TM). ERRMSG.TXT =====> Contains updated information on 32-bit Linker errors, ML error messages, and Microsoft DOSXNT MS-DOS Extender error messages. SAMPLES.TXT ====> Contains information about MASM samples for MS-DOS and Microsoft Windows 3.1. NTSAMPLE.TXT ===> Contains information about MASM samples for Microsoft Windows NT. SUPPORT.TXT ====> Contains updated Microsoft Product Support policies. Information on new processor instructions can be found in the following locations: Intel(R) Pentium(R) ====> In PENTIUM.TXT installed with MASM 6.11 Intel(R) MMX(TM) ====> On the World Wide Web at http://www.intel.com/drg/mmx/manuals/prm/prm.htm AMD(R) 3D Technology ====> On the World Wide Web at http://www.amd.com/swdev/swdev.html Intel(R) Internet Streaming SIMD Extensions ====> On the World Wide Web at http://developer.intel.com/design/PentiumIII/manuals/ ======================< README.TXT Table of Contents >===================== Part 1: Patch Installation -------------------------- Part 2: Documentation Errata ---------------------------- Part 3: System Requirements --------------------------- Part 4: Tips for Using MASM 6.1x -------------------------------- - ALIAS directive - Assembling Files Generated by Compiler - Building 32-Bit Applications - 32-Bit Linking - GROUP Directive and Flat-Model Programming - Structure Packing Issues for Mixed Language Programming - /WIN32 Switch for H2INC - CD-ROM Not a Valid Target - CMP Instruction Encoding - Debugging MASM Applications under Visual C++, 32-Bit Edition, or Fortran PowerStation, 32-Bit Edition - INVOKE Command - Multi-File Assembly with MASM.EXE - NMAKE and NMAKER - Response Files - SAMPLES.TXT and NTSAMPLE.TXT - Using MASM 6.x Structures - Visual C++ 1.0/Fortran PowerStation 1.0 Compatibility - Working with MASM 5.1 Code - Working With Microsoft BASIC Far Strings - .FPO directive new to MASM 6.11a Part 5: Known Assembler Bugs ---------------------------- - Expression Order in High-Level Conditionals - Hexadecimal Constants - Initializing Nested Structures - Span-Dependent Expressions used in Macros - Span-Dependent Equates in Macros and EXTERNDEF ABS - Span-Dependent Text Equates - STRUCT and RECORD Initialization Part 6: What Has Been Fixed in 6.11d? ------------------------------------- Part 7: What Has Been Fixed in 6.12? ------------------------------------- Part 8: What Has Been Fixed in 6.14? --------------------------------------- Part 9: What Has Been Added up to 6.14? --------------------------------------- ====================< Part 1: Patch Installation >========================= 1. Make backup copies of the files affected by the patch. These files are all in the MASM bin directory (for example, C:\MASM611\BIN). The following files will be affected: ML.EXE ML.ERR H2INC.EXE H2INC.ERR WIN.INC 2. Change to your MASM 6.11 root directory. For example: C: CD \MASM611 3. Copy the patch files to your MASM 6.11 root directory. The patch files are: PATCH.EXE PATCH.RTD PATCH.RTP 4. Run the patch program by typing: PATCH The patch program indicates its actions as it runs. When the patch has been successfully completed, you can delete the patch files. 5. Copy H2INC.EXE and H2INC.ERR from the patch diskette to your \masm611\bin directory. 6. Copy WIN.INC from the patch diskette to your \masm611\include directory. If you have trouble: ----------------------- If you have problems installing this patch: - Check to be sure that you have all three patch files: PATCH.EXE, PATCH.RTP, and PATCH.RTD. - Make sure you have the correct version of the files to be updated. This patch will only patch files from MASM 6.11, 6.11a, or 6.11d. If, after checking these possibilities, you still have problems, please contact Microsoft Product Support. ====================< Part 2: Documentation Errata >======================= Environment and Tools, Page xxiii: Microsoft Support Services ------------------------------------------------------------- Microsoft Support Services information has been updated. See SUPPORT.TXT, in the directory in which you installed MASM, for the most current Microsoft support information and policies. Environment and Tools, Page 582: LIB Command Line Sample -------------------------------------------------------- The following example, as it appears on page 582, is incorrect: LIB FIRST +SECOND, , THIRD It should instead read: LIB THIRD +FIRST +SECOND Environment and Tools, Page 649, 651: _syscall and __syscall ------------------------------------------------------------ The H2INC documentation on pages 649 and 651 lists _syscall and __syscall as C keywords recognized by H2INC. These are not recognized, and should be removed. Environment and Tools, Page 819: Error Message A2156 ---------------------------------------------------- The value range given for the first parameter of the PAGE directive is incorrect; "...either 0 or a value in the range of 10-255" should read "...either 0 or a value in the range of 14-255." Reference, Page 12: ML Command-line Options /Cu and /Cx ------------------------------------------------------- /Cu is not the default command-line option, but is indicated as such in the MASM 6.10 Reference. Instead, /Cx should be indicated as the default. Reference, Page 98: LEA is no longer optimized ---------------------------------------------- The MASM 6.10 Reference indicates that the LEA instruction is encoded as a MOV when the source operand is a direct memory address. In response to programmer requests, MASM 6.1x no longer performs this optimization automatically. The optimization can be performed by using the OPATTR operator, as shown in the following macro: MOVLEA MACRO Dest, Symbol IF (OPATTR(Symbol)) AND 08h MOV Dest, OFFSET Symbol ELSE LEA Dest, Symbol ENDIF ENDM Programmer's Guide, Page 156: Using an Emulator Library ------------------------------------------------------- The sample code demonstrating floating-point instructions served by an emulator contains the directive .STARTUP. This directive should be removed. Programmer's Guide, Page 202: User-Defined Epilogues & Prologues ---------------------------------------------------------------- The documentation for user-defined epilogue and prologue code reads "Your macro function must return the parmbytes parameter." It should read "...the localbytes parameter." Programmer's Guide, Page 323: The C++/MASM Interface ---------------------------------------------------- The second sentence in the third paragraph reads: "The linkage specification applies only to called routines, not to external variables." It should read "The linkage specification applies to called routines and external variables." The last sentence in the same paragraph should be removed. Help for Runtime Error R6921 ---------------------------- The on-line help for runtime error R6921 reads "...Possibly the CONFIG.SYS file contained a line such as DEVICE=C:\OS\MM386.EXE..." The file name should read "C:\DOS\EMM386.EXE". =================< Part 3: MASM 6.14 System Requirements >================= The following are system requirements for Microsoft MASM 6.14: - Personal computer using a 386 or higher processor running Windows 95, Windows 98, or Windows NT version 3.51 or later. - 4 MB of available memory. - Hard disk with 10 MB available space. - One 3.5" high-density (1.44 MB) disk drive (3.5" low-density (720K) or 5.25" high-density (1.2 MB) disks available separately with coupon enclosed). To target Windows 3.1, you need one of the following: - Microsoft Windows Software Development Kit (SDK) 3.1. - Microsoft Visual C++ Development System, Standard or Professional Edition. To target Windows NT, you need one of the following: - Microsoft Windows NT Software Development Kit (SDK). - Microsoft Visual C++ Development System, 32-Bit Edition. ====================< Part 4: Tips for Using MASM 6.1x >=================== ALIAS directive --------------- The ALIAS directive is not included in the printed documentation for MASM 6.10. The ALIAS directive can be used for creating libraries that allow the linker (LINK) to map an old function to a new function. Syntax: ALIAS <alias> = <actual-name> where alias is the alternate or alias name, and actual-name is the actual name of the function or procedure. The angle brackets are required. Assembling Files Generated by Compilers --------------------------------------- Many compilers support assembly-language output. If you experience difficulty assembling the output of such compilers, you may need to assemble using the /Zm option. In some cases (for instance, if the compiler inserts nondelimited comments or page numbers) it may be necessary to edit the assembly-language output by hand. Building 32-bit Applications ---------------------------- Following are a number of items you should keep in mind when building 32-bit applications with MASM 6.1x. Examples of how to create 32-bit applications can be found in the \SAMPLES\NTSAMPLE subdirectory of the directory in which you installed MASM. 32-bit Linking -------------- When you are creating a 32-bit application, you must link separately with a 32-bit linker. To prepare your object files for 32-bit linking, assemble using the following switches: - /c (assembles without linking) - /coff (causes object files to be created in Windows NT- compatible common object file format) After assembling, link with your 32-bit linker. Refer to the documentation included with your particular 32-bit linker for specific information and instructions. In addition, the sample Windows NT applications in \SAMPLES\NTSAMPLE demonstrate the use of /c, /coff, and a 32-bit linker. GROUP Directive and Flat-Model Programming ------------------------------------------ The GROUP directive has no effect when used in 32-bit flat-model programming. It is recommended that you not use the GROUP directive when programming in flat model. Using the GROUP directive with /coff will result in an error. Structure Packing Issues for Mixed Language Programming ------------------------------------------------------- Microsoft MASM uses /Zp1 as it's default setting for structure packing; this means that structures are not packed. Other languages may use other default settings for packing. For example, Microsoft C/C++ compilers prior to Visual C++ 32-bit edition use /Zp2; Visual C++ 32-bit edition uses /Zp8 as the default. Modules built using different structure packing may not be able to share structure data items, so care must be taken when using structures in mixed language programs. The packing size is a maximum, not a fixed, packing value. This means that a member must have a size equal to or larger than the packing limit before any packing is done. /WIN32 Switch for H2INC ----------------------- Use the /WIN32 switch with H2INC to convert C header files to NT-compatible MASM include files. When you use the /WIN32 switch, C int data types are converted to the 4-byte assembler equivalent DWORD (signed int data types are converted to SDWORD). Without the /WIN32 switch, H2INC converts int data types to 2-byte WORD (and signed int data types to SWORD). CD-ROM Not a Valid Target ------------------------- A CD-ROM drive is not a valid installation target for MASM 6.11. Setup may incorrectly list a CD-ROM drive on the target drive list. CMP Instruction Encoding ------------------------ MASM 6.1x uses a different encoding for the CMP <reg8>,<reg8> instruction than MASM 6.0 did. There is no difference in length or processor timing. Debugging MASM Applications under Visual C++, 32-bit Edition, or Fortran PowerStation, 32-bit Edition ------------------------------------------------------------- When debugging a pure MASM application under the 32-bit editions of Visual C++ or Fortran PowerStation, you must link in the library file (.LIB) provided with these high-level languages (LIBC.LIB in Visual C++, LIBF.LIB with Fortran PowerStation). If you do not use the .LIB file included in the high-level language, you will receive an "Access Violation" error message when you attempt to run a MASM application in either the 32-bit Visual C++ or 32-bit Fortran PowerStation integrated development environment. INVOKE Command -------------- The MASM 6.x INVOKE command does not support transferring control between 16-bit and 32-bit code segments. When the assembler encounters an INVOKE command in a 16-bit segment, it assumes that the procedure being invoked is also in a 16-bit segment; if the assembler encounters an INVOKE in a 32-bit segment, it assumes that the invoked procedure is also in a 32-bit segment. To avoid this problem, push the necessary parameters on the stack and make the appropriate call instead of using INVOKE. Multi-File Assembly with MASM.EXE --------------------------------- When assembling multiple files with MASM.EXE, you must terminate the command-line with a semi-colon or a comma (for example, MASM *.asm;). Failure to do this may cause the program to appear to hang if you are running Microsoft Windows NT. If this does occur, you can terminate the program with Ctrl+C. NMAKE and NMAKER ---------------- MASM 6.11 includes two versions of the NMAKE project management utility. NMAKER.EXE is a real-mode version of the utility. NMAKE.EXE is a driver program which first loads the MS-DOS extender DOSXNT into memory, and then runs NMAKER.EXE. Using the NMAKE.EXE driver will result in faster build times. Some development tools from other manufacturers may be incompatible with NMAKE.EXE. If you encounter incompatibilities, use NMAKER.EXE instead. Response Files -------------- Information on response files is not included in the MASM 6.10 manuals; however, this information can be found in "ML Command Line Options" in On-line help. SAMPLES.TXT and NTSAMPLE.TXT ---------------------------- SAMPLES.TXT contains information about the MASM samples for MS-DOS/Windows; NTSAMPLE.TXT contains information about the samples given for MASM for Windows NT. Both files include information about additional tools you may need to build some of the samples. If you choose to install the sample code during the setup process, both SAMPLES.TXT and NTSAMPLE.TXT are included. SAMPLES.TXT can be found in the \MASM611\SAMPLES subdirectory; NTSAMPLE.TXT can be found in the \MASM611\SAMPLES\NTSAMPLE subdirectory. Using MASM 6.x Structures ------------------------- MASM 6.x supports a more powerful syntax for structure definition and usage than previous versions of MASM. This more powerful syntax is enabled by default. To use the older syntax, issue the OPTION OLDSTRUCTS directive (see Appendix A of the MASM Programmer's Guide for more information). Note: use of nested structures requires the new MASM 6.x syntax. If you use nested structures, the OPTION OLDSTRUCTS directive will be ignored for the structure which is nested. Visual C++ 1.0/Fortran PowerStation 1.0 Compatibility ----------------------------------------------------- There are specific steps you must take to use MASM 6.1x with Microsoft Visual C++ 1.0 or Microsoft Fortran PowerStation 1.0. If you wish to do mixed language programming with these products, it is recommended that: - You install Visual C++/Fortran PowerStation and MASM 6.1x in separate sub-directories. - You place \MSVC\BIN or \F32\BIN (your Visual C++ or Fortran PowerStation sub-directory) first on your path statement before \MASM611\BIN (your MASM 6.11 sub-directory). - You use NMAKE.EXE from MASM 6.11. You can do this using various methods, such as moving or renaming NMAKE.EXE installed in \MSVC or \F32 thus causing the system to continue searching your path and use the NMAKE.EXE in \MASM611. Optionally, for MASM 6.1x/Visual C++ mixed programming, you may use NMAKER.EXE which is installed with both products. When using the LINK utility included with Visual C++ 1.0, you may encounter one or both of the following warnings: LINK : warning L4017: /r : unrecognized option name; option ignored CVPACK : warning CK4007 : unrecognized option /x; option ignored These warnings do not affect the resulting program and should be ignored. Working with MASM 5.1 Code -------------------------- MASM 6.x offers major advances over previous versions of MASM. Some of these improvements require changes that make MASM 5.1 source code incompatible with MASM 6.x. To provide compatibility with code written for MASM 5.1, MASM 6.x allows you to access MASM 5.1 compatibility code in three ways: - By using the conversion driver MASM.EXE. MASM.EXE converts your existing command-line options to the new syntax, adds the compatibility option /Zm, and invokes ML.EXE. - By using ML.EXE with the /Zm option. You also need to convert command-line options to the new syntax. - By placing the statement OPTION M510 at the beginning of each file. You also need to convert command-line options to the new syntax. In most cases, using the /Zm option or OPTION M510 will be the best solution for assembling existing code. If you prefer to modify your code so it can be assembled without /Zm or OPTION M510, do the following: 1. Add the appropriate OPTION directives to your code. - Always add the following: OPTION OLDSTRUCTS ; Supports old-style structures OPTION OLDMACROS ; Supports old-style macros OPTION DOTNAME ; Supports naming identifiers with ; a leading dot [.] - If your code does not specify the .386 or .386P directive, add the following: OPTION EXPR16 ; Use 16-bit precision in expressions - If your code does not contain a .MODEL directive, add the following: OPTION OFFSET:SEGMENT ; Specifies that the OFFSET operator ; defaults to segment-relative rather ; than group-relative - If your code does not contain a .MODEL directive or if the .MODEL directive does not specify a language, add the following: OPTION NOSCOPED ; Makes code labels global rather than ; local to the procedure in which they ; appear OPTION PROC:PRIVATE ; Makes code labels defined with PROC ; local unless specified otherwise 2. Once your code assembles with the OPTION directives, remove each OPTION directive, one at a time, and reassemble the code after you remove each one. Usually, it is best to remove the OPTION directives in the opposite order in which you added them. In some cases, you may decide that you prefer the MASM 5.x compatibility behavior instead of the new MASM 6.x behavior. When this is true, do not remove the corresponding OPTION statement from your code. For more information on assembling MASM 5.1 code, see Appendix A of the MASM Programmer's Guide. Working With Microsoft BASIC Far Strings ---------------------------------------- The BASIC runtime function StringAssign does not correctly handle strings of zero length. Instead of calling StringAssign to convert a zero-length string, simply return a near pointer to a doubleword with the value 0. .FPO Directive -------------- FPO stands for Frame Pointer Omission. The .FPO directive is a feature added to MASM386 5.10.NT that controls the emission of debug records to the .debug$F segment or section of the object file. These records are the same records that the Microsoft Visual C++ 1.10 or Microsoft Fortran PowerStation compilers emit when they perform frame pointer elimination under /Oy and /Ox optimization control, respectively. Unlike the compiler, MASM never performs any such optimization. it simply passes on the information supplied by the programmer within this directive to the object file. The .FPO directive does not have to be used in order to debug assembly programs under the Microsoft Visual C++ 1.10 or Microsoft Fortran PowerStation debuggers whether they are stand alone Windows NT applications or mixed language C\Assembly or Fortran\Assembly Windows NT applications. This directive has been implemented to provide better backward compatibility with assembly code written for MASM386 5.10.NT, which is provided with the Windows NT DDK. The FPO directive should only be used on naked procedures or those procedures not declared with proto and called with invoke. Also you do not need to use the .FPO directive to debug naked procedures or on procedures that use proto and invoke. The following 6 parameters are used within the directive as follows. .FPO ( number of bytes in a procedures local variables divided by 4, number of bytes in a procedures parameters divided by 4, number of bytes in a procedure prologue, number of registers saved by a procedures prologue, If EBP is allocated, Frame Type ) Parameters Range ---------- ----- number of bytes in local variables / 4 >= 0 number of bytes in parameters / 4 0 - 65535 number of bytes in the procedure prologue 0 - 255 number of registers saved 0 - 7 If EBP is allocated 0 = false, 1 = true Frame Type 0 - 2 The valid values for the Frame Type parameter above are FRAME_FPO 0 FRAME_TRAP 1 FRAME_TSS 2 The C compiler only generates entries with FRAME_FPO. The other two types are used inside the Windows NT kernel to all stack traces across trap and tss frames that can appear in ring 0 code. Example Usages: 1) aproc proc .FPO ( 0, 0, 0, 0, 0, 0 ) ; all params are zero. ret aproc endp 2) .code push +000000001h call aproc add esp, 04h ret aproc proc push ebp mov ebp, esp .FPO ( 0, 1, 3, 1, 1, 0 ) ; 0 = no locals ; 1 = 4 byte param \ 4 ; 3 = bytes in procedure prologue ; 1 = one register saved in prologue ; 1 = if EBP was allocated ; 0 = frame type of FPO mov eax, dword ptr [ebp+8] ; move the passed param to EAX. leave ret 00h aproc endp See ERRMSG.TXT for a list of possible error messages that could be encountered when using the .FPO directive. ======================< Part 5: Known Assembler Bugs >===================== Expression Order in High-Level Conditionals ------------------------------------------- Comparisons in high-level conditionals cannot begin with a literal. For instance, this comparison causes an error: .IF 1 == AX but this works properly: .IF AX == 1 Hexadecimal Constants --------------------- In some instances, ML might not generate the appropriate error message if it encounters a hexadecimal constant that does not have an appending "h". The following will help to ensure that hexadecimal constants are properly represented: - Make sure that all hexadecimal constants have an appending "h". - Begin all hexadecimal constants with the numeral 0. This ensures that the compiler will generate the appropriate error message if it encounters a hexadecimal constant that does not end in "h". Initializing Nested Structures ? ------------------------------ If one structure is nested within another, the inner structure's initializer list must either be empty or include a comma between every field. For example, the structure INFO declared on page 123 of the Programmer's Guide contains a structure of type DISKDRIVES, which in turn contains three BYTE fields. An object of type INFO could be initialized as: Info1 INFO { , , , , { }} ; Inner initializer list is blank or as: Info1 INFO { , , , , {1, 2, }} ; Commas for all three fields but not as: Info1 INFO { , , , , {1, 2 }} ; Error: missing last comma Span-Dependent Expressions used in Macros ----------------------------------------- MASM 6.1x evaluates macro expressions only on the first pass of assembly, but code and data are reevaluated on subsequent passes. Because of this, macro expressions which depend on the span between two addresses may not evaluate correctly. For instance, the following code will not evaluate correctly: Label1: JMP Label2 Label2: REPEAT Label2 - Label1 ; Evaluates incorrectly INC AX END View the listing file to determine if a questionable macro expression was evaluated as desired. Span-Dependent Equates in Macros and EXTERNDEF ABS -------------------------------------------------- The ABS operator causes an identifier to be exported as a relocatable unsized constant (see Programmer's Guide page 220). If ABS is used with EXTERNDEF within a macro, and the constant being exported depends on the difference between two addresses, the constant may not be exported correctly. In some cases, the listing file will show the correct value, but the value in the resulting .obj will be incorrect. For instance, the following code will not evaluate correctly: EXTERNDEF TableSize:ABS ; Will not be exported correctly MAKETABLE MACRO Table1 LABEL BYTE DB 0, 1, 2 TableSize EQU $-Table1 ENDM SEG1 SEGMENT MAKETABLE SEG1 ENDS To avoid this problem, either use the 'PUBLIC' directive in place of 'EXTERNDEF', or put a label before the equate, within the macro. Span-Dependent Text Equates --------------------------- The TEXTEQU operator is evaluated on the first assembly pass. If TEXTEQU is used with an expression that depends on the difference between two addresses, the resulting constant may be incorrect. For instance, the following code will not evaluate correctly: Label1: JMP Label2 Label2: WrongNum TEXTEQU %Label2-Label1 ; WrongNum will be incorrect STRUCT and RECORD Initialization -------------------------------- If a STRUCT containing a UNION is initialized incorrectly, it is possible that the compiler might not generate an appropriate error. If the UNION contains a RECORD, the STRUCT is initialized to the default value for the original UNION. EQU Redefinition ---------------- EQU can be redefined when a text macro is used, the following example illustrates this known bug. a EQU <T> a EQU <U> ; This second occurence should generate an error "A2005: ; symbol redefinition" because once "a" is defined as a ; text macro it cannot be redefined to be a different kind ; of symbol. y EQU y ; This statement is syntactically correct, but any attempt ; to use "y" and you'll receive "error A2123: text macro ; nesting level too deep". =================< Part 6: What Has Been Fixed in 6.11d? >================= - The opcode generated for the FSETPM instruction has been corrected. - Errors when using the ALIAS directive and creating COFF object files have been fixed. - Errors when using the ORG directive to back patch the code being generated in a COFF object file have been fixed. - The extra byte in the listing file for instructions using 32-bit addressing modes has been removed. - Unresolved externals that could occur when a symbol appeared more than once in EXTERNDEF directives have been fixed. - You can now step through code in include files when building COFF object files. - Various Access Violations when generating COFF object files (/coff) have been fixed. =================< Part 7: What Has Been Fixed in 6.12? >================== - Various Access Violations when generating CodeView debug information (/Zi) have been fixed. - Errors when specifying an entry point with the END directive and creating COFF object files have been fixed. - Various structure packing inconsistencies when compared to the Microsoft C/C++ compilers have been corrected. MASM 6.12 should now pack structures the same as the Microsoft C/C++ compiler when using the same packing options. - Note there were no major fixes in MASM 6.13 so there's no section on those fixes =================< Part 8: What Has Been Fixed in 6.14? >================== - Incorrect A2039 errors indicating 'line too long' have been fixed. ================< Part 9: What Has Been Added up to 6.14? >================ .586 and .586P Directives in MASM 6.11 -------------------------------------- The .586 directive enables assembly of non-privileged instructions available for the Pentium processor. The .586P directive enables privileged instructions in addition to the non-privileged instructions for the Pentium. The following example demonstrates implementation of the .586 directive. .586 .model flat, C .data ; .586 gives 110100111111y = 0D3Fh ; .586p gives 110110111111y = 0DBFh var1 dw @cpu IF @Cpu AND 0100000y %echo Pentium instructions enabled. ELSE %echo Pentium instructions Not enabled. ENDIF end .686 and .686P Directives in MASM 6.12 -------------------------------------- The .686 directive enables assembly of non-privileged instructions available for the Pentium Pro processor. The .686P directive enables privileged instructions in addition to the non-privileged instructions for the Pentium Pro. The following example demonstrates implementation of the .686 directive. .686 .model flat, C .data ; .686 gives 110101111111y = 0D7Fh ; .686p gives 110111111111y = 0DFFh var1 dw @cpu IF @Cpu AND 1000000y %echo Pentium Pro instructions enabled. ELSE %echo Pentium Pro instructions Not enabled. ENDIF end .MMX Directive in MASM 6.12 --------------------------------------------------------------------- The .MMX directive enables assembly of MMX instructions. Users can check to see that @Version is 612 or higher to tell if the version of MASM being used supports the .MMX directive and MMX instructions. The following example demonstrates the use of the .MMX directive. .586 .MMX .model flat, C .code ;; MMX opcodes can be assembled end .K3D Directive in MASM 6.13 --------------------------------------------------------------------- The .K3D directive enables assembly of K3D instructions. Users can check to see that @Version is 613 or higher to tell if the version of MASM being used supports the .K3D directive and K3D instructions. The following example demonstrates the use of the .K3D directive. .586 .K3D .model flat, C .code ;; K3D opcodes can be assembled end .XMM Directive in MASM 6.14 --------------------------------------------------------------------- The .XMM directive enables assembly of Internet Streaming SIMD Extension instructions. Users can check to see that @Version is 614 or higher to tell if the version of MASM being used supports the .XMM directive and Internet Streaming SIMD Extension instructions. The following example demonstrates the use of the .XMM directive. .686 .XMM .model flat, C .code ;; Internet Streaming SIMD Extension opcodes can be assembled end The Intel Internet Streaming SIMD Extension instructions use 128-bit or 16 byte data items that need to be 16 byte aligned. These data items would normally be defined as an array of REALs, but can be accessed with a single instruction as type OWORD (Octel Word). This is an example of how the data would be defined and accessed. .686 .XMM _DATA SEGMENT PARA 'DATA' ALIGN 16 DATA_ARRAY REAL4 1.0 REAL4 2.0 REAL4 3.0 REAL4 4.0 _DATA ENDS _TEXT SEGMENT DWORD 'CODE' ASSUME ds:_DATA ;; ... movaps xmm1, OWORD PTR DATA_ARRAY ;; ... _TEXT ENDS end

2010-02-10

vc6 sp6 plus 2010-01-20 part4

本绿色版是基于原版VC6制作,并无任何精简,集成SP6,保留了原版的所有组件。 [+]表示增加的内容 [-]表示去除的内容 [*]表示所做的改动 1.改动说明: [+]增加VAX,WndTabs,VC6LineNumberAddin.dll(显示行号插件),VCDebug.dll(调试辅助插件)。 [+]集成2003SDK,并默认优先使用2003的SDK。 [+]集成WTL SDK。 [+]集成masm32 v10,可以编写,源码级调试asm程序。 [*]修改IDE代码窗口字体为“宋体”9号。 [*]替换VC98\bin中的c2.dll为13.0.9044.0版本,以支持SSE内联汇编指令。 2.安装使用说明 1>解开压缩包到任一目录(不能解压到分区的根目录下,否则会导致运行出错)。 2>运行Install.bat开始安装,安装过程1到5分钟不等,视机器配置而定。 3>安装完后,会在桌面及开始程序菜单中建立程序的快捷方式。双击运行即可使用。 3.卸载说明 1>运行Uninstall.bat稍等片刻即可完全卸载。 by cntrump my blog: http://hi.baidu.com/cntrump

2010-01-20

vc6 sp6 plus 2010-01-20 part3

本绿色版是基于原版VC6制作,并无任何精简,集成SP6,保留了原版的所有组件。 [+]表示增加的内容 [-]表示去除的内容 [*]表示所做的改动 1.改动说明: [+]增加VAX,WndTabs,VC6LineNumberAddin.dll(显示行号插件),VCDebug.dll(调试辅助插件)。 [+]集成2003SDK,并默认优先使用2003的SDK。 [+]集成WTL SDK。 [+]集成masm32 v10,可以编写,源码级调试asm程序。 [*]修改IDE代码窗口字体为“宋体”9号。 [*]替换VC98\bin中的c2.dll为13.0.9044.0版本,以支持SSE内联汇编指令。 2.安装使用说明 1>解开压缩包到任一目录(不能解压到分区的根目录下,否则会导致运行出错)。 2>运行Install.bat开始安装,安装过程1到5分钟不等,视机器配置而定。 3>安装完后,会在桌面及开始程序菜单中建立程序的快捷方式。双击运行即可使用。 3.卸载说明 1>运行Uninstall.bat稍等片刻即可完全卸载。 by cntrump my blog: http://hi.baidu.com/cntrump

2010-01-20

vc6 sp6 plus 2010-01-20 part2

本绿色版是基于原版VC6制作,并无任何精简,集成SP6,保留了原版的所有组件。 [+]表示增加的内容 [-]表示去除的内容 [*]表示所做的改动 1.改动说明: [+]增加VAX,WndTabs,VC6LineNumberAddin.dll(显示行号插件),VCDebug.dll(调试辅助插件)。 [+]集成2003SDK,并默认优先使用2003的SDK。 [+]集成WTL SDK。 [+]集成masm32 v10,可以编写,源码级调试asm程序。 [*]修改IDE代码窗口字体为“宋体”9号。 [*]替换VC98\bin中的c2.dll为13.0.9044.0版本,以支持SSE内联汇编指令。 2.安装使用说明 1>解开压缩包到任一目录(不能解压到分区的根目录下,否则会导致运行出错)。 2>运行Install.bat开始安装,安装过程1到5分钟不等,视机器配置而定。 3>安装完后,会在桌面及开始程序菜单中建立程序的快捷方式。双击运行即可使用。 3.卸载说明 1>运行Uninstall.bat稍等片刻即可完全卸载。 by cntrump my blog: http://hi.baidu.com/cntrump

2010-01-20

vc6 sp6 plus 2010-01-20 part1

本绿色版是基于原版VC6制作,并无任何精简,集成SP6,保留了原版的所有组件。 [+]表示增加的内容 [-]表示去除的内容 [*]表示所做的改动 1.改动说明: [+]增加VAX,WndTabs,VC6LineNumberAddin.dll(显示行号插件),VCDebug.dll(调试辅助插件)。 [+]集成2003SDK,并默认优先使用2003的SDK。 [+]集成WTL SDK。 [+]集成masm32 v10,可以编写,源码级调试asm程序。 [*]修改IDE代码窗口字体为“宋体”9号。 [*]替换VC98\bin中的c2.dll为13.0.9044.0版本,以支持SSE内联汇编指令。 2.安装使用说明 1>解开压缩包到任一目录(不能解压到分区的根目录下,否则会导致运行出错)。 2>运行Install.bat开始安装,安装过程1到5分钟不等,视机器配置而定。 3>安装完后,会在桌面及开始程序菜单中建立程序的快捷方式。双击运行即可使用。 3.卸载说明 1>运行Uninstall.bat稍等片刻即可完全卸载。 by cntrump my blog: http://hi.baidu.com/cntrump

2010-01-20

VCpp6sp6_虎年献礼.part2

真正的集成了SP6的VC。 MSDEV.exe 版本号:6.0.9782.2 修改日期:2004-2-27 0:00 基于原版制作,保留原版的所有功能。 添加了psapi和iphelp库,以免写小程序的时候还要另外找 增加了几个模版,包括汇编模版,驱动模版。可以直接用来写汇编程序并带源码 调试。 集成VAX,WndTabs插件。支持更多的关键字高亮。 在安装目录下有个mytools文件夹,里面放的是我写的VC文件关联助手(用来给 绿色版的VC添加文件关联,其关联是和原版的关联一样的,关联的类型包 括.dsw,.dsp,.rc,.h,.c,.cpp),还有一个是来自www.cctry.com的VC辅助工具 ,能设置的地方很多,是个不错的辅助工具。 添加了多个工程向导,包括汇编(可直接编译)和驱动向导(需要自己安装DDK) 更多功能,还是自己下载体验吧。。。

2010-01-03

空空如也

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

TA关注的人

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