打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
obj  fileSoftware optimization resources. C++ and assembly. Windows, Linux, BSD, Mac OS X
Home
Cultural Selection Theory
Evolutionary biology
Random number generators
Software optimization resources
Web software
Contact address
Software optimization resources
See also my blog
Contents
Optimization manuals
This series of five manuals describes everything you need to know about optimizingcode for x86 and x86-64 family microprocessors, including optimization advices for C++and assembly language, details about the microarchitecture and instructiontimings of most Intel, AMD and VIA processors, and details about different compilers andcalling conventions.
Operating systems covered: DOS, Windows, Linux, BSD, Mac OS X Intel based, 32 and 64 bits.
Note that these manuals are not for beginners.
1. Optimizing software in C++:An optimization guide for Windows, Linux and Mac platforms
This is an optimization manual for advanced C++ programmers.Topics include: The choice of platform and operating system. Choice ofcompiler and framework. Finding performance bottlenecks.The efficiency of different C++ constructs. Multi-core systems.Parallelization with vector operations. CPU dispatching. Efficientcontainer class templates. Etc.
File name: optimizing_cpp.pdf, size: 1008262, last modified: 2013-Oct-07.
Download.
2. Optimizing subroutines in assembly language:An optimization guide for x86 platforms
This is an optimization manual for advanced assembly language programmers and compiler makers.Topics include: C++ instrinsic functions, inline assembly and stand-alone assembly.Linking optimized assembly subroutines into high level language programs.Making subroutine libraries compatible with multiple compilers and operating systems.Optimizing for speed or size. Memory access. Loops. Vector programming (XMM, YMM, SIMD).CPU-specific optimization and CPU dispatching.
File name: optimizing_assembly.pdf, size: 965119, last modified: 2013-Oct-07.
Download.
3. The microarchitecture of Intel, AMD and VIA CPUs:An optimization guide for assembly programmers and compiler makers
This manual contains details about the internal working of various microprocessorsfrom Intel, AMD and VIA. Topics include: Out-of-order execution, register renaming,pipeline structure, execution unit organization and branch prediction algorithmsfor each type of microprocessor. Describes many details that cannot be foundin manuals from microprocessor vendors or anywhere else. The information isbased on my own research and measurements rather than on official sources.This information will be useful to programmers who want to make CPU-specificoptimizations as well as to compiler makers and students of microarchitecture.
File name: microarchitecture.pdf, size: 1610541, last modified: 2013-Oct-07.
Download.
4. Instruction tables:Lists of instruction latencies, throughputs and micro-operationbreakdowns for Intel, AMD and VIA CPUs
Contains detailed lists of instruction latencies, execution unit throughputs,micro-operation breakdown and other details for all common application instructionsof most microprocessors from Intel, AMD and VIA. Intended as an appendix to thepreceding manuals. Available as pdf file and as spreadsheet (ods format).
File name: instruction_tables.pdf, size: 843089, last modified: 2013-Oct-07.
Download.
File name: instruction_tables.ods, size: 288940, last modified: 2013-Oct-06.
Download.
5. Calling conventions for different C++ compilers and operating systems
This document contains details about data representation,function calling conventions, register usage conventions, name mangling schemes,etc. for many different C++ compilers and operating systems. Discusses compatibilitiesand incompatibilities between different C++ compilers. Includes information thatis not covered by the official Application Binary Interface standards (ABI's).The information provided here is based on my own research and thereforedescriptive rather than normative.Intended as a source of reference for programmers who want to make functionlibraries compatible with multiple compilers or operating systems and formakers of compilers and other development tools who want their tools to becompatible with existing tools.
File name: calling_conventions.pdf, size: 506036, last modified: 2013-Oct-07.
Download.
All five manuals
Download all the above manuals together in one zip file.
File name: optimization_manuals.zip, size: 4192959, last modified: 2013-Oct-07.
Download.
This is a collection of C++ classes, functions and operators that makes it easier touse the the vector instructions (Single Instruction Multiple Data instructions) of modern CPUs without using assembly language. Supports the SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, FMA, and XOP instruction sets. Can compile for different instruction sets from the same source code.Description and instructions.Message board.
File name: vectorclass.zip, size: 489667, last modified: 2013-Oct-04.
Download.
This utility can be used for converting object files between COFF/PE, OMF, ELF and Mach-O formats for all 32-bit and 64-bit x86 platforms. Can modify symbol names in object files. Can build, modify and convert function librariesacross platforms. Can dump object files and executable files. Also includes a very good disassembler supporting the SSE4, AVX, AVX2, AVX512, FMA3, FMA4, XOPand Knights Corner instruction sets.Source code included (GPL).Manual.
File name: objconv.zip, size: 814334, last modified: 2013-Nov-27.
Download.
This is a library of optimized subroutines coded in assembly language. The functions inthis library can be called from C, C++ and other compiled high-level languages.Supports many different compilers under Windows, Linux, BSD and Mac OS X operating systems, 32 and 64 bits.This library contains faster versions of common C/C++ memory and string functions, fast functions for string search and string parsing, fast integer division and integer vector division, as well as several useful functions not found elsewhere.
The package contains library files in many different file formats,C++ header file and assembly language source code.Gnu general public license applies.Manual.
File name: asmlib.zip, size: 711586, last modified: 2013-Dec-18.
Download.
Test programs that I have used for my research. Can measure clock cycles and performance monitor counters such ascache misses, branch mispredictions, resource stalls etc. in a small piece ofcode in C, C++ or assembly. Supports Windows and Linux, 32 and 64 bit mode, multiple threads.
For experts only. Useful for analyzing small pieces of code but not for profilinga whole program.
File name: testp.zip, size: 777452, last modified: 2013-Oct-06.
Download.
This is a program that can change the CPUID vendor string, familyand model number on VIA Nano processors. Seemy blogfor a discussion of the purpose of this program.
File name: cpuidfake.zip, size: 67593, last modified: 2010-Aug-08.
Download.
Agner's CPU blogwww.agner.org/optimize/blog
Masm Forumwww.masmforum.com
ASM Community Messageboardwww.asmcommunity.net/board/
Linux Assemblywww.linuxassembly.org
Hutch's Assembly pageswww.movsd.com
Iczelion's Win32 Assembly Homepagewin32assembly.online.fr/
CPU-id tools and informationwww.cpuid.com
likwid performance measuring tools for Linuxcode.google.com/p/likwid
Programmer's heaven assembler zoneProgrammers'Heaven
X-bit Labs articles on microprocessorswww.xbitlabs.com/articles/cpu/
Virtual sandpile x86 Processor informationwww.sandpile.org
intel-assembler programmers guides and manualswww.intel-assembler.it
Online computer bookswww.computer-books.us/assembler.php
Instruction latency listingsinstlatx64.atw.hu/
FASM assembler and messageboardflatassembler.net
NASM assemblersourceforge.net/projects/nasm
YASM assemblerwww.tortall.net/projects/yasm
JWASM assemblerwww.japheth.de
Yeppp open source library of assembly language functionswww.yeppp.info
Newsgroup: comp.lang.asm.x86
Intel resources
Reference manuals and other documents can be found at Intel's website. Intel's web site is refurnished so often that any link I could provide hereto specific documents would be broken after a few months. I will thereforerecommend that you use the search facilities atdeveloper.intel.comand search for "Software Developer's Manual" and "Optimization Reference Manual".
AMD resources
www.amd.com/us-en/Processors/TechnicalResources/0,,30_182_739,00.html
Microsoft resources
MASM manualsmsdn.microsoft.com
1197420
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Programming Optimization: Techniques, example...
Clive Page博士的Fortran 资源
Fortran, C, C++ for Windows
SILKYPIX Developer Studio 4.1 SE SOFTWARE MANUAL (2)
cat 、tac、nl
网格加速器一个
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服