ASSEMBLY LANGUAGE PROGRAMMING IN LINUX

By C. BEZIU

TABLE OF CONTENTS CHAPTER 1: GETTING STARTED ABOUT THE ARM PROCESSOR WHAT YOU WILL LEARN WHY USE ASSEMBLY TOOLS YOU NEED COMPUTERS AND NUMBERS ARM ASSEMBLY INSTRUCTIONS CPU REGISTERS ARM INSTRUCTION FORMAT COMPUTER MEMORY ABOUT THE GCC ASSEMBLER HELLO WORLD ABOUT COMMENTS WHERE TO START ASSEMBLY INSTRUCTIONS DATA CALLING LINUX REVERSE ENGINEERING OUR PROGRAM SUMMARY EXERCISES CHAPTER 2: LOADING AND ADDING NEGATIVE NUMBERS ABOUT TWO’S COMPLEMENT ABOUT ONE’S COMPLEMENT BIG VS LITTLE ENDIAN ABOUT BI-ENDIAN PROS OF LITTLE ENDIAN SHIFTING AND ROTATING ABOUT CARRY FLAG ABOUT THE BARREL SHIFTER BASICS OF SHIFTING AND ROTATING LOADING REGISTERS INSTRUCTION ALIASES MOV/MOVK/MOVN ABOUT OPERAND2 MOVN MOV EXAMPLES ADD/ADC ADD WITH CARRY SUB/SBC CHAPTER 3: TOOLING UP GNU MAKE REBUILDING A FILE A RULE FOR BUILDING S FILES DEFINING VARIABLES GDB PREPARING TO DEBUG BEGINNING GDB SOURCE CONTROL CHAPTER 4: CONTROLLING PROGRAM FLOW UNCONDITIONAL BRANCH ABOUT CONDITION FLAGS BRANCH ON CONDITION ABOUT THE CMP INSTRUCTION LOOPS FOR LOOPS WHILE LOOPS IF/THEN/ELSE LOGICAL OPERATORS AND EOR ORR BIC DESIGN PATTERNS CONVERTING INTEGERS TO ASCII USING EXPRESSIONS IN IMMEDIATE CONSTANTS STORING A REGISTER TO MEMORY WHY NOT PRINT IN DECIMAL? PERFORMANCE OF BRANCH INSTRUCTIONS MORE COMPARISON INSTRUCTIONS CHAPTER 5: THANKS FOR THE MEMORIES DEFINING MEMORY CONTENTS ALIGNING DATA LOADING A REGISTER WITH AN ADDRESS PC RELATIVE ADDRESSING LOADING DATA FROM MEMORY INDEXING THROUGH MEMORY STORING A REGISTER DOUBLE REGISTERS CHAPTER 6: FUNCTIONS AND THE STACK STACKS ON LINUX BRANCH WITH LINK NESTING FUNCTION CALLS FUNCTION PARAMETERS AND RETURN VALUES MANAGING THE REGISTERS SUMMARY OF THE FUNCTION CALL ALGORITHM UPPERCASE REVISITED STACK FRAMES STACK FRAME EXAMPLE MACROS INCLUDE DIRECTIVE MACRO DEFINITION LABELS WHY MACROS? MACROS TO IMPROVE CODE CHAPTER 7: LINUX OPERATING SYSTEM SERVICES SO MANY SERVICES CALLING CONVENTION LINUX SYSTEM CALL NUMBERS RETURN CODES STRUCTURES WRAPPERS CONVERTING A FILE TO UPPERCASE BUILDING S FILES OPENING A FILE ERROR CHECKING LOOPING CHAPTER 8: PROGRAMMING GPIO PINS GPIO OVERVIEW FLASHING LEDS IN LINUX, EVERYTHING IS A FILE MOVING CLOSER TO THE METAL VIRTUAL MEMORY IN DEVICES, EVERYTHING IS MEMORY REGISTERS IN BITS GPIO CONTROL REGISTERS MORE FLASHING LEDS ROOT ACCESS CHAPTER 9: INTERACTING WITH C AND PYTHON CALLING C ROUTINES PRINTING DEBUG INFORMATION ADDING WITH CARRY REVISITED CALLING ASSEMBLY ROUTINES FROM C PACKAGING OUR CODE STATIC LIBRARY SHARED LIBRARY EMBEDDING ASSEMBLY LANGUAGE INSIDE C CODE CALLING ASSEMBLY LANGUAGE FROM PYTHON CHAPTER 10: MULTIPLY, DIVIDE, AND ACCUMULATE MULTIPLICATION EXAMPLES DIVISION EXAMPLE MULTIPLY AND ACCUMULATE VECTORS AND MATRICES ACCUMULATE INSTRUCTIONS CHAPTER 11: FLOATING-POINT OPERATIONS ABOUT FLOATING-POINT NUMBERS ABOUT NORMALIZATION AND NANS RECOGNIZING ROUNDING ERRORS DEFINING FLOATING-POINT NUMBERS ABOUT FPU REGISTERS DEFINING THE FUNCTION CALL PROTOCOL LOADING AND SAVING FPU REGISTERS PERFORMING BASIC ARITHMETIC CALCULATING DISTANCE BETWEEN POINTS PERFORMING FLOATING-POINT CONVERSIONS COMPARING FLOATING-POINT NUMBERS CHAPTER 12: NEON COPROCESSOR ABOUT THE NEON REGISTERS STAY IN YOUR LANE PERFORMING ARITHMETIC OPERATIONS CALCULATING 4D VECTOR DISTANCE OPTIMIZING 3×3 MATRIX MULTIPLICATION CHAPTER 13: OPTIMIZING CODE OPTIMIZING THE UPPERCASE ROUTINE SIMPLIFYING THE RANGE COMPARISON USING A CONDITIONAL INSTRUCTION RESTRICTING THE PROBLEM DOMAIN USING PARALLELISM WITH SIMD TIPS FOR OPTIMIZING CODE AVOIDING BRANCH INSTRUCTIONS AVOIDING EXPENSIVE INSTRUCTIONS DON’T BE AFRAID OF MACROS LOOP UNROLLING KEEPING DATA SMALL BEWARE OF OVERHEATING CHAPTER 14: READING AND UNDERSTANDING CODE BROWSING LINUX AND GCC CODE COPYING A PAGE OF MEMORY CODE CREATED BY GCC USING THE CBNZ AND CBZ INSTRUCTIONS REVERSE ENGINEERING AND GHIDRA CHAPTER 15: HACKING CODE BUFFER OVERRUN HACK CAUSES OF BUFFER OVERRUN STEALING CREDIT CARD NUMBERS STEPPING THROUGH THE STACK MITIGATING BUFFER OVERRUN VULNERABILITIES DON’T USE STRCPY PIE IS GOOD POOR STACK CANARIES ARE THE FIRST TO GO PREVENTING CODE RUNNING ON THE STACK TRADE-OFFS OF BUFFER OVERFLOW MITIGATION TECHNIQUES

ISBN978-93-7796-807-6
Copyright Year2027
Pages337
Price$271.99
LanguageEnglish
FormatPDF