{"product_id":"x64-assembly-language-step-by-step-programming-with-linux-hardback-9781394155248","title":"x64 Assembly Language Step-by-Step; Programming with Linux (Hardback) 9781394155248","description":"\u003cfont face=\"Georgia\"\u003e\r\n\u003cp\u003e\u003cfont size=\"6\"\u003ex64 Assembly Language Step-by-Step\u003c\/font\u003e\u003cbr\u003e\r\n\u003cfont size=\"5\"\u003eProgramming with Linux\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\r\n\r\n\r\n\u003cp\u003e\u003cfont size=\"4\"\u003eJeff Duntemann (Author)\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e\u003cfont size=\"3\"\u003e9781394155248, Wiley\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e\u003cfont size=\"3\"\u003eHardback, published 23 October 2023\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e\u003cfont size=\"3\"\u003e640 pages\u003cbr\u003e23.6 x 18.8 x 3.8 cm, 1.202 kg\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\r\n\r\n\r\n\r\n\u003cp align=\"justify\"\u003e\u003cstrong\u003e\u003cfont size=\"3\"\u003e\u003cp\u003e\u003cb\u003eThe long-awaited x64 edition of the bestselling introduction to Intel assembly language\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIn the newly revised fourth edition of \u003ci\u003ex64 Assembly Language Step-by-Step: Programming with Linux\u003c\/i\u003e, author Jeff Duntemann delivers an extensively rewritten introduction to assembly language with a strong focus on 64-bit long-mode Linux assembler. The book offers a lighthearted, robust, and accessible approach to a challenging technical discipline, giving you a step-by-step path to learning assembly code that’s engaging and easy to read.\u003c\/p\u003e \u003cp\u003e\u003ci\u003ex64 Assembly Language Step-by-Step\u003c\/i\u003e makes quick work of programmable computing basics, the concepts of binary and hexadecimal number systems, the Intel x86\/x64 computer architecture, and the process of Linux software development to dive deep into the x64 instruction set, memory addressing, procedures, macros, and interface to the C-language code libraries on which Linux is built.\u003c\/p\u003e \u003cp\u003eYou’ll also find:\u003c\/p\u003e \u003cul\u003e \u003cli\u003eA set of free and open-source development and debugging tools you can download and put to use immediately\u003c\/li\u003e \u003cli\u003eNumerous examples woven throughout the book to illustrate the practical implementation of the ideas discussed within\u003c\/li\u003e \u003cli\u003ePractical tips on software design, coding, testing, and debugging\u003c\/li\u003e \u003c\/ul\u003e \u003cp\u003eA one-stop resource for aspiring and practicing Intel assembly programmers, the latest edition of this celebrated text provides readers with an authoritative tutorial approach to x64 technology that’s ideal for self-paced instruction. Please note, the author's listings that accompany this book are available from the author website at www.contrapositivediary.com under his heading \"My Assembly Language Books.\"\u003c\/p\u003e\u003c\/font\u003e\u003c\/strong\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e\u003cfont size=\"3\"\u003e\u003cp\u003eIntroduction xxix\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 1 It’s All in the Plan 1\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eAnother Pleasant Valley Saturday 1\u003c\/p\u003e \u003cp\u003eHad This Been the Real Thing 5\u003c\/p\u003e \u003cp\u003eAssembly Language Programming As a Square Dance 5\u003c\/p\u003e \u003cp\u003eAssembly Language Programming As a Board Game 6\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 2 Alien Bases 11\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eThe Return of the New Math Monster 11\u003c\/p\u003e \u003cp\u003eOctal: How the Grinch Stole Eight and Nine 16\u003c\/p\u003e \u003cp\u003eHexadecimal: Solving the Digit Shortage 20\u003c\/p\u003e \u003cp\u003eFrom Hex to Decimal and from Decimal to Hex 24\u003c\/p\u003e \u003cp\u003ePractice. Practice! PRACTICE! 27\u003c\/p\u003e \u003cp\u003eArithmetic in Hex 28\u003c\/p\u003e \u003cp\u003eBinary 34\u003c\/p\u003e \u003cp\u003eHexadecimal as Shorthand for Binary 38\u003c\/p\u003e \u003cp\u003ePrepare to Compute 40\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 3 Lifting the Hood 41\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eRAXie, We Hardly Knew Ye 41\u003c\/p\u003e \u003cp\u003eSwitches, Transistors, and Memory 43\u003c\/p\u003e \u003cp\u003eThe Shop Supervisor and the Assembly Line 54\u003c\/p\u003e \u003cp\u003eThe Box That Follows a Plan 58\u003c\/p\u003e \u003cp\u003eWhat vs. How: Architecture and Microarchitecture 63\u003c\/p\u003e \u003cp\u003eEnter the Plant Manager 67\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 4 Location, Location, Location 73\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eThe Joy of Memory Models 73\u003c\/p\u003e \u003cp\u003eThe Nature of Segments 80\u003c\/p\u003e \u003cp\u003eSegment Registers 87\u003c\/p\u003e \u003cp\u003eThe Four Major Assembly Programming Models 95\u003c\/p\u003e \u003cp\u003e64-Bit Long Mode 101\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 5 The Right to Assemble 103\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eThe Nine and Sixty Ways to Code 103\u003c\/p\u003e \u003cp\u003eFiles and What’s Inside Them 104\u003c\/p\u003e \u003cp\u003eText In, Code Out 115\u003c\/p\u003e \u003cp\u003eThe Assembly Language Development Process 123\u003c\/p\u003e \u003cp\u003eLinking the Object Code File 130\u003c\/p\u003e \u003cp\u003eTaking a Trip Down Assembly Lane 134\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 6 A Place to Stand, with Access to Tools 143\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntegrated Development Environments 143\u003c\/p\u003e \u003cp\u003eIntroducing SASM 146\u003c\/p\u003e \u003cp\u003eLinux and Terminals 153\u003c\/p\u003e \u003cp\u003eUsing Linux Make 164\u003c\/p\u003e \u003cp\u003eDebugging with SASM 172\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 7 Following Your Instructions 175\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eBuild Yourself a Sandbox 176\u003c\/p\u003e \u003cp\u003eInstructions and Their Operands 178\u003c\/p\u003e \u003cp\u003eSource and Destination Operands 178\u003c\/p\u003e \u003cp\u003eRally Round the Flags, Boys! 186\u003c\/p\u003e \u003cp\u003eSigned and Unsigned Values 195\u003c\/p\u003e \u003cp\u003eImplicit Operands and MUL 200\u003c\/p\u003e \u003cp\u003eReading and Using an Assembly Language Reference 205\u003c\/p\u003e \u003cp\u003eNEG Negate (Two’s Complement; i.e., Multiply by −1) 208\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 8 Our Object All Sublime 213\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eThe Bones of an Assembly Language Program 213\u003c\/p\u003e \u003cp\u003eLast In, First Out via the Stack 223\u003c\/p\u003e \u003cp\u003eUsing Linux Kernel Services Through Syscall 231\u003c\/p\u003e \u003cp\u003eDesigning a Nontrivial Program 235\u003c\/p\u003e \u003cp\u003eGoing Further 248\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 9 Bits, Flags, Branches, and Tables 251\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eBits Is Bits (and Bytes Is Bits) 251\u003c\/p\u003e \u003cp\u003eShifting Bits 258\u003c\/p\u003e \u003cp\u003eBit-Bashing in Action 262\u003c\/p\u003e \u003cp\u003eFlags, Tests, and Branches 270\u003c\/p\u003e \u003cp\u003eX64 Long Mode Memory Addressing in Detail 279\u003c\/p\u003e \u003cp\u003eCharacter Table Translation 290\u003c\/p\u003e \u003cp\u003eTables Instead of Calculations 298\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 10 Dividing and Conquering 299\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eBoxes within Boxes 300\u003c\/p\u003e \u003cp\u003eCalling and Returning 309\u003c\/p\u003e \u003cp\u003eLocal Labels and the Lengths of Jumps 325\u003c\/p\u003e \u003cp\u003eBuilding External Procedure Libraries 330\u003c\/p\u003e \u003cp\u003eThe Art of Crafting Procedures 352\u003c\/p\u003e \u003cp\u003eSimple Cursor Control in the Linux Console 356\u003c\/p\u003e \u003cp\u003eCreating and Using Macros 364\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 11 Strings and Things 377\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eThe Notion of an Assembly Language String 378\u003c\/p\u003e \u003cp\u003eREP STOSB, the Software Machine Gun 387\u003c\/p\u003e \u003cp\u003eThe Semiautomatic Weapon: STOSB Without REP 392\u003c\/p\u003e \u003cp\u003eMOVSB: Fast Block Copies 397\u003c\/p\u003e \u003cp\u003eStoring Data to Discontinuous Strings 402\u003c\/p\u003e \u003cp\u003eCommand-Line Arguments, String Searches, and the Linux Stack 408\u003c\/p\u003e \u003cp\u003eThe Stack, Its Structure, and How to Use It 414\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 12 Heading Out to C 423\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eWhat’s GNU? 424\u003c\/p\u003e \u003cp\u003eLinking to the Standard C Library 429\u003c\/p\u003e \u003cp\u003eFormatted Text Output with printf() 438\u003c\/p\u003e \u003cp\u003eData In with fgets() and scanf() 442\u003c\/p\u003e \u003cp\u003eBe a Linux Time Lord 448\u003c\/p\u003e \u003cp\u003eUnderstanding AT\u0026amp;T Instruction Mnemonics 456\u003c\/p\u003e \u003cp\u003eGenerating Random Numbers 460\u003c\/p\u003e \u003cp\u003eHow C Sees Command-Line Arguments 472\u003c\/p\u003e \u003cp\u003eSimple File I\/O 474\u003c\/p\u003e \u003cp\u003e\u003cb\u003eConclusion: Not the End, But Only the Beginning 489\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eAppendix A The Return of the Insight Debugger 493\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eInsight’s Shortcomings 494\u003c\/p\u003e \u003cp\u003eOpening a Program Under Insight 495\u003c\/p\u003e \u003cp\u003eSetting Command-Line Arguments with Insight 496\u003c\/p\u003e \u003cp\u003eRunning and Stepping a Program 496\u003c\/p\u003e \u003cp\u003eThe Memory Window 497\u003c\/p\u003e \u003cp\u003eShowing the Stack in Insight’s Memory View 498\u003c\/p\u003e \u003cp\u003eExamining the Stack with Insight’s Memory View 498\u003c\/p\u003e \u003cp\u003eLearn gdb! 500\u003c\/p\u003e \u003cp\u003e\u003cb\u003eAppendix B Partial x64 Instruction Reference 501\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eWhat’s Been Removed from x64 502\u003c\/p\u003e \u003cp\u003eFlag Results 502\u003c\/p\u003e \u003cp\u003eSize Specifiers 503\u003c\/p\u003e \u003cp\u003eInstruction Index 505\u003c\/p\u003e \u003cp\u003eADC: Arithmetic Addition with Carry 507\u003c\/p\u003e \u003cp\u003eADD: Arithmetic Addition 509\u003c\/p\u003e \u003cp\u003eAND: Logical AND 511\u003c\/p\u003e \u003cp\u003eBT: Bit Test 513\u003c\/p\u003e \u003cp\u003eCALL: Call Procedure 515\u003c\/p\u003e \u003cp\u003eCLC: Clear Carry Flag (CF) 517\u003c\/p\u003e \u003cp\u003eCLD: Clear Direction Flag (DF) 518\u003c\/p\u003e \u003cp\u003eCMP: Arithmetic Comparison 519\u003c\/p\u003e \u003cp\u003eDEC: Decrement Operand 521\u003c\/p\u003e \u003cp\u003eDIV: Unsigned Integer Division 522\u003c\/p\u003e \u003cp\u003eINC: Increment Operand 524\u003c\/p\u003e \u003cp\u003eJ??: Jump If Condition Is Met 525\u003c\/p\u003e \u003cp\u003eJECXZ: Jump if ECX=0 527\u003c\/p\u003e \u003cp\u003eJRCXZ: Jump If RCX=0 528\u003c\/p\u003e \u003cp\u003eJMP: Unconditional Jump 529\u003c\/p\u003e \u003cp\u003eLEA: Load Effective Address 531\u003c\/p\u003e \u003cp\u003eLOOP: Loop Until CX\/ECX\/RCX=0 532\u003c\/p\u003e \u003cp\u003eLOOPNZ\/LOOPNE: Loop Until CX\/ECX\/RCX=0 and ZF=0 534\u003c\/p\u003e \u003cp\u003eLOOPZ\/LOOPE: Loop Until CX\/ECX\/RCX=0 and ZF=1 535\u003c\/p\u003e \u003cp\u003eMOV: Copy Right Operand into Left Operand 536\u003c\/p\u003e \u003cp\u003eMOVS: Move String 538\u003c\/p\u003e \u003cp\u003eMOVSX: Copy with Sign Extension 540\u003c\/p\u003e \u003cp\u003eMUL: Unsigned Integer Multiplication 542\u003c\/p\u003e \u003cp\u003eNEG: Negate (Two’s Complement; i.e., Multiply by −1) 544\u003c\/p\u003e \u003cp\u003eNOP: No Operation 546\u003c\/p\u003e \u003cp\u003eNOT: Logical NOT (One’s Complement) 547\u003c\/p\u003e \u003cp\u003eOR: Logical OR 548\u003c\/p\u003e \u003cp\u003ePOP: Copy Top of Stack into Operand 550\u003c\/p\u003e \u003cp\u003ePOPF\/D\/Q: Copy Top of Stack into Flags Register 552\u003c\/p\u003e \u003cp\u003ePUSH: Push Operand onto Top of Stack 553\u003c\/p\u003e \u003cp\u003ePUSHF\/D\/Q: Push Flags Onto the Stack 555\u003c\/p\u003e \u003cp\u003eRET: Return from Procedure 556\u003c\/p\u003e \u003cp\u003eROL\/ROR: Rotate Left\/Rotate Right 558\u003c\/p\u003e \u003cp\u003eSBB: Arithmetic Subtraction with Borrow 560\u003c\/p\u003e \u003cp\u003eSHL\/SHR: Shift Left\/Shift Right 562\u003c\/p\u003e \u003cp\u003eSTC: Set Carry Flag (CF) 564\u003c\/p\u003e \u003cp\u003eSTD: Set Direction Flag (DF) 565\u003c\/p\u003e \u003cp\u003eSTOS\/B\/W\/D\/Q: Store String 566\u003c\/p\u003e \u003cp\u003eSUB: Arithmetic Subtraction 568\u003c\/p\u003e \u003cp\u003eSYSCALL: Fast System Call into Linux 570\u003c\/p\u003e \u003cp\u003eXCHG: Exchange Operands 571\u003c\/p\u003e \u003cp\u003eXLAT: Translate Byte Via Table 572\u003c\/p\u003e \u003cp\u003eXOR: Exclusive OR 573\u003c\/p\u003e \u003cp\u003eAppendix C Character Set Charts 575\u003c\/p\u003e \u003cp\u003eIndex 579\u003c\/p\u003e\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e\u003cfont size=\"3\"\u003eSubject Areas: Computer programming \/ software development [\u003ca title=\"See our other books on Computer programming \/ software development\" href=\"https:\/\/freshlyprintedbooks.co.uk\/search?q=%22Computer%20programming%20\/%20software%20development%20%5BUM%5D%22\"\u003eUM\u003c\/a\u003e]\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\r\n\u003c\/font\u003e","brand":"Wiley","offers":[{"title":"Brand New","offer_id":52449452065048,"sku":"9781394155248","price":44.89,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0730\/2037\/5320\/files\/9781394155248.jpg?v=1785199880","url":"https:\/\/freshlyprintedbooks.co.uk\/products\/x64-assembly-language-step-by-step-programming-with-linux-hardback-9781394155248","provider":"Freshly Printed Books","version":"1.0","type":"link"}