{"id":14912,"date":"2022-12-25T09:19:31","date_gmt":"2022-12-25T09:19:31","guid":{"rendered":"https:\/\/bryceautomation.com\/?p=14912"},"modified":"2022-12-25T12:42:20","modified_gmt":"2022-12-25T12:42:20","slug":"modern-x86_64-assembly-language","status":"publish","type":"post","link":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/25\/modern-x86_64-assembly-language\/","title":{"rendered":"Modern x86_64 Assembly Language"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Overview of Modern x86_64 Assembly Language<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Mnemonics<\/h3>\n\n\n\n<p>Modern x86_64 Assembly Language allows us to write programs on your computer..  Assembly is a low level language.  In other words, you are basically writing machine code directly.  This forces you to have a good understanding of how the processor and memory work together.  The main difference between Assembly and Machine Language is that you don&#8217;t have to remember the machine codes.  In Assembly, you just need to remember mnemonics that represent instructions.  <\/p><div id=\"bryce-3646044869\" class=\"bryce-afterfirst bryce-entity-placement\"><script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-8316758073402323\" crossorigin=\"anonymous\"><\/script><ins class=\"adsbygoogle\" style=\"display:block;\" data-ad-client=\"ca-pub-8316758073402323\" \ndata-ad-slot=\"7728240895\" \ndata-ad-format=\"auto\"><\/ins>\n<script> \n(adsbygoogle = window.adsbygoogle || []).push({}); \n<\/script>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Labels<\/h3>\n\n\n\n<p>Another important advantage of Assembly is that you use labels for certain blocks of code.  These labels represent starting addresses for blocks of code.  As you make changes to your program, the starting address of various blocks of code will change.  In Assembly language, we don&#8217;t need to update all of these addresses as you would in machine code.  The Assembler will automatically find the address of these labels, and update all references accordingly.  <\/p>\n\n\n\n<p>For example, let&#8217;s say you have a block of logic to terminate your program at address 2000h.   You need to call this block of logic many times throughout your program.  By adding 1 instruction above this block, you might move the address of the block to 2002h.  If all of your addresses were hard-coded to 2000h, then you would have to update all of those references in your program.  <\/p>\n\n\n\n<p>On the other hand, if you have a label on this block such as _endProgram: and reference that label throughout your project, it&#8217;s OK if the address this label represents changes.  The assembler will automatically find the address when you assemble your code.  Really, addresses are a bit more complicated on a modern machine, but that concept gives you a good idea as to why we need labels.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Instructions, Registers, and Memory<\/h2>\n\n\n\n<p>When you begin writing assembly language, it&#8217;s important to understand the difference between instructions, registers, and memory.  Instructions are actions the processor takes.  These instructions read and write data.  This data can reside either in registers, or in memory.<\/p>\n\n\n\n<p>REGISTERS store data on board the processor.   Registers operate much more quickly than memory.  Think of registers as a workspace that are immediately on your desktop.  All of the data is directly in front of you, and is fast and easy to get to.  You have a limited number of registers available.  There are 32 bit registers available for a 32 bit system.  For a 64 bit system, these registers have 64 bits available to them, and you have an additional registers on top of that.  In other words, 64 bit systems give you a bigger desktop to work with.<\/p>\n\n\n\n<p>On the other hand, you can think of MEMORY as information that is in a file cabinet.  It takes longer to access at first, but once you load the data from memory into a register, we can work with it much more quickly.  For all practical purposes, there is more memory on the computer that one person could probably ever use.  That is to say, unless you are working with very large arrays of data.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Assembling and Linking your Code<\/h2>\n\n\n\n<p>After you write your code, you need to assemble your code to create what&#8217;s called an &#8220;Object File&#8221;.  This converts your code to machine language.   After that, we run a &#8220;Linker&#8221; on this object file to generate your program.  The Linker simply ties different object files together to create your entire program.  This might include libraries that allow your code to interact with the operating system.<\/p>\n\n\n\n<p>There are several assemblers available such as TASM, NASM, and GAS.  In this case, I&#8217;m using Debian Linux, and I&#8217;ll be running the GNU Assembler (GAS) in future posts.  Generally, a compiled Linux program will not run on a Windows machine, and vice versa.   To install GAS on Debian (or Debian-based distributions such as Ubuntu), simply install build-essential:<\/p>\n\n\n\n<p>sudo apt-get install build-essential<\/p>\n\n\n\n<p>In future posts, we&#8217;ll be writing and building assembly language projects.  Once your project is complete, we&#8217;ll simply build the object code using GAS (as command), and then run the Linker (ld) to create our executable program.  In the example below, we&#8217;ll compile an assembly language file called &#8220;maximum.s&#8221;.  As you can see, I&#8217;m running the linker after that to create an executable file.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"746\" height=\"164\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-59.png\" alt=\"\" class=\"wp-image-14913 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-59.png 746w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-59-300x66.png 300w\" data-sizes=\"(max-width: 746px) 100vw, 746px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 746px; --smush-placeholder-aspect-ratio: 746\/164;\" \/><\/figure>\n\n\n\n<p>As I said before, this is the first post in a series of posts that will guide us through writing assembly language projects.  To view other posts, visit the <a href=\"https:\/\/bryceautomation.com\/index.php\/category\/information-technology\/\">Information Technology Category Page!<\/a><\/p>\n\n\n\n<p>&#8212; Ricky Bryce<\/p>\n<div id=\"bryce-1318543503\" class=\"bryce-after-content bryce-entity-placement\"><script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-8316758073402323\" crossorigin=\"anonymous\"><\/script><ins class=\"adsbygoogle\" style=\"display:block;\" data-ad-client=\"ca-pub-8316758073402323\" \ndata-ad-slot=\"4667596182\" \ndata-ad-format=\"auto\"><\/ins>\n<script> \n(adsbygoogle = window.adsbygoogle || []).push({}); \n<\/script>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Overview of Modern x86_64 Assembly Language Mnemonics Modern x86_64 Assembly Language allows us to write programs on your computer.. Assembly is a low level language. In other words, you are basically writing machine code directly. This forces you to have a good understanding of how the processor and memory work together. The main difference between <a class=\"moretag btn btn-primary\" href=\"https:\/\/bryceautomation.com\/index.php\/2022\/12\/25\/modern-x86_64-assembly-language\/\">Read More \u00bb<\/a><\/p>\n","protected":false},"author":1,"featured_media":14913,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[894],"class_list":{"0":"post-14912","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-information-technology","8":"tag-modern-assembly","9":"czr-hentry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Modern x86_64 Assembly Language - Bryce Automation<\/title>\n<meta name=\"description\" content=\"Overview of Modern x86_64 Assembly Language: Defining instructions, Registers, Memory Locations, Assemblers, and Linkers.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/bryceautomation.com\/index.php\/2022\/12\/25\/modern-x86_64-assembly-language\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Modern x86_64 Assembly Language - Bryce Automation\" \/>\n<meta property=\"og:description\" content=\"Overview of Modern x86_64 Assembly Language: Defining instructions, Registers, Memory Locations, Assemblers, and Linkers.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bryceautomation.com\/index.php\/2022\/12\/25\/modern-x86_64-assembly-language\/\" \/>\n<meta property=\"og:site_name\" content=\"Bryce Automation\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/ricky.bryce.7\" \/>\n<meta property=\"article:published_time\" content=\"2022-12-25T09:19:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-12-25T12:42:20+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-59.png\" \/>\n\t<meta property=\"og:image:width\" content=\"746\" \/>\n\t<meta property=\"og:image:height\" content=\"164\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Ricky\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/25\\\/modern-x86_64-assembly-language\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/25\\\/modern-x86_64-assembly-language\\\/\"},\"author\":{\"name\":\"Ricky\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\"},\"headline\":\"Modern x86_64 Assembly Language\",\"datePublished\":\"2022-12-25T09:19:31+00:00\",\"dateModified\":\"2022-12-25T12:42:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/25\\\/modern-x86_64-assembly-language\\\/\"},\"wordCount\":754,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/25\\\/modern-x86_64-assembly-language\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/image-59.png\",\"keywords\":[\"Modern Assembly\"],\"articleSection\":[\"Information Technology\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/25\\\/modern-x86_64-assembly-language\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/25\\\/modern-x86_64-assembly-language\\\/\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/25\\\/modern-x86_64-assembly-language\\\/\",\"name\":\"Modern x86_64 Assembly Language - Bryce Automation\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/25\\\/modern-x86_64-assembly-language\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/25\\\/modern-x86_64-assembly-language\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/image-59.png\",\"datePublished\":\"2022-12-25T09:19:31+00:00\",\"dateModified\":\"2022-12-25T12:42:20+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\"},\"description\":\"Overview of Modern x86_64 Assembly Language: Defining instructions, Registers, Memory Locations, Assemblers, and Linkers.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/25\\\/modern-x86_64-assembly-language\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/25\\\/modern-x86_64-assembly-language\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/25\\\/modern-x86_64-assembly-language\\\/#primaryimage\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/image-59.png\",\"contentUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/image-59.png\",\"width\":746,\"height\":164,\"caption\":\"Modern x86_64 Assembly Language\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/12\\\/25\\\/modern-x86_64-assembly-language\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/bryceautomation.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Modern x86_64 Assembly Language\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#website\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/\",\"name\":\"Bryce Automation\",\"description\":\"Automating Home and Industry...\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/bryceautomation.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\",\"name\":\"Ricky\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/wphb-cache\\\/gravatar\\\/a8f\\\/a8fe6bf79d292b388ffee281ccb12488x96.jpg\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/wphb-cache\\\/gravatar\\\/a8f\\\/a8fe6bf79d292b388ffee281ccb12488x96.jpg\",\"contentUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/wphb-cache\\\/gravatar\\\/a8f\\\/a8fe6bf79d292b388ffee281ccb12488x96.jpg\",\"caption\":\"Ricky\"},\"sameAs\":[\"http:\\\/\\\/bryceautomation.com\",\"https:\\\/\\\/www.facebook.com\\\/ricky.bryce.7\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/ricky-bryce-4367a416\\\/\"],\"url\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/author\\\/ricky\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Modern x86_64 Assembly Language - Bryce Automation","description":"Overview of Modern x86_64 Assembly Language: Defining instructions, Registers, Memory Locations, Assemblers, and Linkers.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/25\/modern-x86_64-assembly-language\/","og_locale":"en_US","og_type":"article","og_title":"Modern x86_64 Assembly Language - Bryce Automation","og_description":"Overview of Modern x86_64 Assembly Language: Defining instructions, Registers, Memory Locations, Assemblers, and Linkers.","og_url":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/25\/modern-x86_64-assembly-language\/","og_site_name":"Bryce Automation","article_author":"https:\/\/www.facebook.com\/ricky.bryce.7","article_published_time":"2022-12-25T09:19:31+00:00","article_modified_time":"2022-12-25T12:42:20+00:00","og_image":[{"width":746,"height":164,"url":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-59.png","type":"image\/png"}],"author":"Ricky","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/25\/modern-x86_64-assembly-language\/#article","isPartOf":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/25\/modern-x86_64-assembly-language\/"},"author":{"name":"Ricky","@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7"},"headline":"Modern x86_64 Assembly Language","datePublished":"2022-12-25T09:19:31+00:00","dateModified":"2022-12-25T12:42:20+00:00","mainEntityOfPage":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/25\/modern-x86_64-assembly-language\/"},"wordCount":754,"commentCount":0,"image":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/25\/modern-x86_64-assembly-language\/#primaryimage"},"thumbnailUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-59.png","keywords":["Modern Assembly"],"articleSection":["Information Technology"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/bryceautomation.com\/index.php\/2022\/12\/25\/modern-x86_64-assembly-language\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/25\/modern-x86_64-assembly-language\/","url":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/25\/modern-x86_64-assembly-language\/","name":"Modern x86_64 Assembly Language - Bryce Automation","isPartOf":{"@id":"https:\/\/bryceautomation.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/25\/modern-x86_64-assembly-language\/#primaryimage"},"image":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/25\/modern-x86_64-assembly-language\/#primaryimage"},"thumbnailUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-59.png","datePublished":"2022-12-25T09:19:31+00:00","dateModified":"2022-12-25T12:42:20+00:00","author":{"@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7"},"description":"Overview of Modern x86_64 Assembly Language: Defining instructions, Registers, Memory Locations, Assemblers, and Linkers.","breadcrumb":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/25\/modern-x86_64-assembly-language\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bryceautomation.com\/index.php\/2022\/12\/25\/modern-x86_64-assembly-language\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/25\/modern-x86_64-assembly-language\/#primaryimage","url":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-59.png","contentUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/12\/image-59.png","width":746,"height":164,"caption":"Modern x86_64 Assembly Language"},{"@type":"BreadcrumbList","@id":"https:\/\/bryceautomation.com\/index.php\/2022\/12\/25\/modern-x86_64-assembly-language\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/bryceautomation.com\/"},{"@type":"ListItem","position":2,"name":"Modern x86_64 Assembly Language"}]},{"@type":"WebSite","@id":"https:\/\/bryceautomation.com\/#website","url":"https:\/\/bryceautomation.com\/","name":"Bryce Automation","description":"Automating Home and Industry...","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/bryceautomation.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7","name":"Ricky","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/bryceautomation.com\/wp-content\/wphb-cache\/gravatar\/a8f\/a8fe6bf79d292b388ffee281ccb12488x96.jpg","url":"https:\/\/bryceautomation.com\/wp-content\/wphb-cache\/gravatar\/a8f\/a8fe6bf79d292b388ffee281ccb12488x96.jpg","contentUrl":"https:\/\/bryceautomation.com\/wp-content\/wphb-cache\/gravatar\/a8f\/a8fe6bf79d292b388ffee281ccb12488x96.jpg","caption":"Ricky"},"sameAs":["http:\/\/bryceautomation.com","https:\/\/www.facebook.com\/ricky.bryce.7","https:\/\/www.linkedin.com\/in\/ricky-bryce-4367a416\/"],"url":"https:\/\/bryceautomation.com\/index.php\/author\/ricky\/"}]}},"_links":{"self":[{"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/posts\/14912","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/comments?post=14912"}],"version-history":[{"count":0,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/posts\/14912\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/media\/14913"}],"wp:attachment":[{"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/media?parent=14912"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/categories?post=14912"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/tags?post=14912"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}