Parallel Cryptographic Arithmetic Using a Redundant Montgomery Representation
IEEE Transactions on Computers
Hardware-Assisted Visibility Sorting for Unstructured Volume Rendering
IEEE Transactions on Visualization and Computer Graphics
Intermediate-representation recovery from low-level code
Proceedings of the 2006 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Optimal register allocation for SSA-form programs in polynomial time
Information Processing Letters
Combinatorial sketching for finite programs
Proceedings of the 12th international conference on Architectural support for programming languages and operating systems
Increased bit-parallelism for approximate and multiple string matching
Journal of Experimental Algorithmics (JEA)
Proceedings of the conference on Design, automation and test in Europe
Analysis of modular arithmetic
ACM Transactions on Programming Languages and Systems (TOPLAS) - Special Issue ESOP'05
A case study in SIMD text processing with parallel bit streams: UTF-8 to UTF-16 transcoding
Proceedings of the 13th ACM SIGPLAN Symposium on Principles and practice of parallel programming
Perfect hashing as an almost perfect subtype test
ACM Transactions on Programming Languages and Systems (TOPLAS)
Inferring Congruence Equations Using SAT
CAV '08 Proceedings of the 20th international conference on Computer Aided Verification
Fast Bit Gather, Bit Scatter and Bit Permutation Instructions for Commodity Microprocessors
Journal of Signal Processing Systems
Embedded DSP Processor Design: Application Specific Instruction Set Processors
Embedded DSP Processor Design: Application Specific Instruction Set Processors
Deriving Efficient Data Movement from Decoupled Access/Execute Specifications
HiPEAC '09 Proceedings of the 4th International Conference on High Performance Embedded Architectures and Compilers
Proceedings of the 14th international conference on Architectural support for programming languages and operating systems
Size matters: lessons from a broken binary search
Journal of Computing Sciences in Colleges
CPU, SMP and GPU implementations of Nohalo level 1, a fast co-convex antialiasing image resampler
C3S2E '09 Proceedings of the 2nd Canadian Conference on Computer Science and Software Engineering
Beaver: Engineering an Efficient SMT Solver for Bit-Vector Arithmetic
CAV '09 Proceedings of the 21st International Conference on Computer Aided Verification
Algorithm 898: Efficient multiplication of dense matrices over GF(2)
ACM Transactions on Mathematical Software (TOMS)
Automatically generating instruction selectors using declarative machine descriptions
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Optimal register allocation for SSA-form programs in polynomial time
Information Processing Letters
Increasing the efficiency of bit-counting
International Journal of Computers and Applications
Proceedings of the 19th international conference on World wide web
Information hiding in software with mixed Boolean-arithmetic transforms
WISA'07 Proceedings of the 8th international conference on Information security applications
The reachability-bound problem
PLDI '10 Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation
Oracle-guided component-based program synthesis
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Dimensions in program synthesis
Proceedings of the 12th international ACM SIGPLAN symposium on Principles and practice of declarative programming
Parallel minimax tree searching on GPU
PPAM'09 Proceedings of the 8th international conference on Parallel processing and applied mathematics: Part I
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Synthesis of loop-free programs
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Statically-directed dynamic automated test generation
Proceedings of the 2011 International Symposium on Software Testing and Analysis
An efficient non-moving garbage collector for functional languages
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
Precise control flow reconstruction using boolean logic
EMSOFT '11 Proceedings of the ninth ACM international conference on Embedded software
Abstract domains of affine relations
SAS'11 Proceedings of the 18th international conference on Static analysis
Compact features for detection of near-duplicates in distributed retrieval
SPIRE'06 Proceedings of the 13th international conference on String Processing and Information Retrieval
Automatic abstraction for congruences
VMCAI'10 Proceedings of the 11th international conference on Verification, Model Checking, and Abstract Interpretation
Induction variable analysis with delayed abstractions
HiPEAC'05 Proceedings of the First international conference on High Performance Embedded Architectures and Compilers
Advanced static analysis for decompilation using scattered context grammars
ACC'11/MMACTEE'11 Proceedings of the 13th IASME/WSEAS international conference on Mathematical Methods and Computational Techniques in Electrical Engineering conference on Applied Computing
Range aggregate maximal points in the plane
WALCOM'12 Proceedings of the 6th international conference on Algorithms and computation
Verifying two lines of c with why3: an exercise in program verification
VSTTE'12 Proceedings of the 4th international conference on Verified Software: theories, tools, experiments
Optimizing the computation of n-point correlations on large-scale astronomical data
SC '12 Proceedings of the International Conference on High Performance Computing, Networking, Storage and Analysis
POLY: a new polynomial data structure for Maple 17
ACM Communications in Computer Algebra
Better GP benchmarks: community survey results and proposals
Genetic Programming and Evolvable Machines
Proceedings of the eighteenth international conference on Architectural support for programming languages and operating systems
Architecture for transparent binary acceleration of loops with memory accesses
ARC'13 Proceedings of the 9th international conference on Reconfigurable Computing: architectures, tools, and applications
Iterative semi-global matching for robust driver assistance systems
ACCV'12 Proceedings of the 11th Asian conference on Computer Vision - Volume Part III
Hierarchical scan-line dynamic programming for optical flow using semi-global matching
ACCV'12 Proceedings of the 11th international conference on Computer Vision - Volume 2
Faster upper bounding of intersection sizes
Proceedings of the 36th international ACM SIGIR conference on Research and development in information retrieval
Data-driven equivalence checking
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
A decomposition for in-place matrix transposition
Proceedings of the 19th ACM SIGPLAN symposium on Principles and practice of parallel programming
Compiling Scilab to high performance embedded multicore systems
Microprocessors & Microsystems
Hi-index | 0.00 |
From the Book:Caveat Emptor: The cost of software maintenance increases with the square of the programmer's creativity.First Law of Programmer Creativity,Robert D. Bliss, 1992This is a collection of small programming tricks which the author has comeacross over many years. Most of them will work only on computers that representintegers in two's-complement form. Although a 32-bit machine is assumedwhen the register length is relevant, most of the tricks are easily adapted tomachines with other register sizes.This book does not deal with "large" tricks such as sophisticated sorting andcompiler optimization techniques. Rather, it deals with "small" tricks that usuallyinvolve individual computer words or instructions, such as counting thenumber of 1-bits in a word. Such tricks often use a mixture of arithmetic and logicalinstructions.It is assumed throughout that integer overflow interrupts have been maskedoff, so they cannot occur. C, Fortran, and even Java programs run in thisenvironment, but Pascal and ADA users beware!The presentation is informal. Proofs are given only when the algorithm is definitelynot obvious, and sometimes not even then. The methods use computer-arithmetic, "floor" functions, mixtures of arithmetic and logical operations, etc.Proofs in this domain are often difficult and awkward to express.To reduce typographical errors and oversights, many of the algorithms havebeen executed. That is why they are given in a real programming language eventhough it, like every computer language, has some ugly features. For the highlevel language C is used, because it is widely known, it allows the straightforwardmixture of integer and bit-stringoperations, and C compilers are availablethat produce high quality object code.Occasionally machine language is used. It employs a 3-address format, mainlyfor ease of readability. The assembly language used is that of a fictitiousmachine that is representative of today's RISC computers.Branch-free code is favored. This is because on many computers branchesslow down instruction fetching and inhibit executing instructions in parallel.Another problem with branches is that they may inhibit compiler optimizationssuch as instruction scheduling, commoning, and register allocation. That is, thecompiler may be more effective at these optimizations with a program that consistsof a few large basic blocks, rather than many small ones.The code sequences also tend to favor small immediate values, comparisons tozero (rather than to some other number), and instruction-level parallelism.Although much of the code would become more concise by using table lookups(from memory), this is not often mentioned. This is because loads are becomingmore expensive relative to arithmetic instructions, and the table lookup methodsare often not very interesting (although they are often practical). But there areexceptional cases.Finally, I should mention that the term "hacker" in the title is meant in the originalsense of an aficionado of computerssomeone who enjoys making computersdo new things, or do old things in a new and clever way. The hacker isusually quite good at his craft, but may very well not be a professional computerprogrammer or designer. The hacker's work may be useful or may be just agame. As an example of the latter, more than one determined hacker has writtena program which, when executed, writes out an exact copy of itself. 1 This is thesense in which we use "hacker." If you're looking for tips on how to break intoother's computers, you won't find them here.H. S. Warren, Jr.February 2002