{"id":3348,"date":"2022-02-02T13:13:45","date_gmt":"2022-02-02T07:43:45","guid":{"rendered":"https:\/\/binaryterms.com\/?p=3348"},"modified":"2022-02-07T12:49:34","modified_gmt":"2022-02-07T07:19:34","slug":"intermediate-code-generation","status":"publish","type":"post","link":"https:\/\/binaryterms.com\/intermediate-code-generation.html","title":{"rendered":"Intermediate Code Generation"},"content":{"rendered":"<div class=\"\" data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"eocs9-0-0\">\n<div class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"eocs9-0-0\"><span data-offset-key=\"eocs9-0-0\">Intermediate code generation is a phase in the compiler. In our earlier content \u2018<a href=\"https:\/\/binaryterms.com\/compiler.html\" target=\"_blank\" rel=\"noopener\">Compiler in Computer<\/a>\u2019, we have discussed Intermediate code generation. It gets its input from the semantic analysis phase and serves its output to the code optimizer phase.<\/span><\/div>\n<\/div>\n<div class=\"\" data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"eid5s-0-0\">\n<div class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"eid5s-0-0\"><span data-offset-key=\"eid5s-0-0\">\u00a0<\/span><\/div>\n<\/div>\n<div class=\"\" data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"18k8u-0-0\">\n<div class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"18k8u-0-0\"><span data-offset-key=\"18k8u-0-0\">The intermediate code generator generates some intermediate representation. And from this intermediate representation, the compiler generates the target code.<\/span><\/div>\n<\/div>\n<h2>Content: Intermediate Code Generation<\/h2>\n<ol>\n<li><a href=\"#WhatisIntermediateCodeGeneration?\">What is Intermediate Code Generation?<\/a><\/li>\n<li><a href=\"#Three-AddressCode\">Three-Address Code<\/a><\/li>\n<li><a href=\"#TypesofIntermediateCode\">Types of Intermediate Code<\/a><\/li>\n<li><a href=\"#BenefitsofIntermediateCodeGeneration\">Benefits of Intermediate Code Generation<\/a><\/li>\n<\/ol>\n<p><a name=\"WhatisIntermediateCodeGeneration?\"><\/a><\/p>\n<h3>What is Intermediate Code Generation?<\/h3>\n<div class=\"\" data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"2at8r-0-0\">\n<div class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"2at8r-0-0\"><span data-offset-key=\"2at8r-0-0\">As we know the task of the compiler is to process the source program and translate it into a target program. Well, in this process a compiler may generate one or more intermediate representations. This representation can have various forms.<\/span><\/div>\n<div data-offset-key=\"2at8r-0-0\">The intermediate representation must be:<\/div>\n<\/div>\n<ol>\n<li class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"4cea-0-0\"><span data-offset-key=\"4cea-0-0\">Easy to produce.<\/span><span data-offset-key=\"42t8j-0-0\"><br data-text=\"true\" \/><\/span><\/li>\n<li class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"dvf4d-0-0\"><span data-offset-key=\"dvf4d-0-0\">Easy to translate into target code.<\/span><\/li>\n<\/ol>\n<div class=\"\" data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"c5mv3-0-0\">\n<div class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"c5mv3-0-0\"><span data-offset-key=\"c5mv3-0-0\">The intermediate representation can be of various forms. The two most important kinds of intermediate representations are:<\/span><\/div>\n<\/div>\n<ol>\n<li class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"5g96u-0-0\"><span data-offset-key=\"5g96u-0-0\">Tree i.e. \u201cparse trees\u201d and \u201csyntax tree\u201d.<\/span><span data-offset-key=\"7p4pd-0-0\"><br data-text=\"true\" \/><\/span><\/li>\n<li class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"erni9-0-0\"><span data-offset-key=\"erni9-0-0\">A Linear representation i.e., \u201cthree address code\u201d.<\/span><\/li>\n<\/ol>\n<div class=\"\" data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"dhoc5-0-0\">\n<div class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"dhoc5-0-0\"><span data-offset-key=\"dhoc5-0-0\">We have discussed \u201ctrees\u201d <\/span><span class=\"adverb\"><span data-offset-key=\"dhoc5-1-0\">briefly<\/span><\/span><span data-offset-key=\"dhoc5-2-0\"> in our previous content \u2018<a href=\"https:\/\/binaryterms.com\/syntax-directed-translation.html\" target=\"_blank\" rel=\"noopener\">Syntax Directed Translation<\/a>\u2019. In this context, we will focus on the linear representation code i.e. &#8220;three address codes&#8221;.\u00a0<\/span><\/div>\n<\/div>\n<p><a name=\"@@@@@@@@\"><\/a><\/p>\n<h3>Logical Structure of Compiler<\/h3>\n<p>The logical structure of the compiler has two ends i.e., the front end and a back end. The front end generates the intermediate representation of the source program. And this intermediate representation helps the back end in generating the target program.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3353\" src=\"https:\/\/binaryterms.com\/wp-content\/uploads\/2022\/02\/Intermediate-Code-Generation.jpg\" alt=\"Intermediate Code Generation\" width=\"682\" height=\"168\" srcset=\"https:\/\/binaryterms.com\/wp-content\/uploads\/2022\/02\/Intermediate-Code-Generation.jpg 682w, https:\/\/binaryterms.com\/wp-content\/uploads\/2022\/02\/Intermediate-Code-Generation-300x74.jpg 300w\" sizes=\"auto, (max-width: 682px) 100vw, 682px\" \/><\/p>\n<div class=\"\" data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"93s6d-0-0\">\n<div class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"93s6d-0-0\"><span data-offset-key=\"93s6d-0-0\">The frontend end of the compiler includes:<\/span><\/div>\n<\/div>\n<ul class=\"public-DraftStyleDefault-ul\" data-offset-key=\"5jfph-0-0\">\n<li class=\"public-DraftStyleDefault-unorderedListItem public-DraftStyleDefault-reset public-DraftStyleDefault-depth0 public-DraftStyleDefault-listLTR\" data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"5jfph-0-0\">\n<div class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"5jfph-0-0\"><span data-offset-key=\"5jfph-0-0\">Parser, <\/span><\/div>\n<\/li>\n<li class=\"public-DraftStyleDefault-unorderedListItem public-DraftStyleDefault-depth0 public-DraftStyleDefault-listLTR\" data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"ak97s-0-0\">\n<div class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"ak97s-0-0\"><span data-offset-key=\"ak97s-0-0\">Static checker <\/span><\/div>\n<\/li>\n<li class=\"public-DraftStyleDefault-unorderedListItem public-DraftStyleDefault-depth0 public-DraftStyleDefault-listLTR\" data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"5jcer-0-0\">\n<div class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"5jcer-0-0\"><span data-offset-key=\"5jcer-0-0\">Intermediate Code Generator<\/span><\/div>\n<\/li>\n<\/ul>\n<div class=\"\" data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"55l54-0-0\">\n<div class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"55l54-0-0\"><span data-offset-key=\"55l54-0-0\">Earlier we have discussed parser and types of parsing i.e. top-up parsing and bottom parsing. The <\/span><strong>parser<\/strong><span data-offset-key=\"55l54-0-2\"> parses the input string and generates the parse tree or the <strong>syntax tree<\/strong>. The nodes of the syntax tree represent the operations. And the leaves represent the operands.<\/span><\/div>\n<div data-offset-key=\"55l54-0-0\"><span data-offset-key=\"fqtvj-0-0\">As the parsing proceeds some information keeps on attaching<\/span><span data-offset-key=\"fqtvj-2-0\">\u00a0to these nodes. And we refer to it as an <strong>annotated parse tree<\/strong>.<\/span><\/div>\n<h4 data-offset-key=\"55l54-0-0\"><span style=\"font-family: Raleway, sans-serif;font-size: 20px\">Static Checker<\/span><\/h4>\n<\/div>\n<div class=\"\" data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"fqtvj-0-0\">\n<div data-offset-key=\"fqtvj-0-0\">\n<div class=\"\" data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"3a0g0-0-0\">\n<div class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"3a0g0-0-0\"><span data-offset-key=\"3a0g0-0-0\">Static checking confirms that the compiler can compile the program <\/span><span class=\"adverb\"><span data-offset-key=\"3a0g0-3-0\">successfully<\/span><\/span><span data-offset-key=\"3a0g0-4-0\">. It identifies the programming errors earlier. This helps the programmer to rectify the error before a program <\/span><span class=\"passivevoice\"><span data-offset-key=\"3a0g0-5-0\">executes<\/span><\/span><span data-offset-key=\"3a0g0-6-0\">. Static checking performs two types of checking:<\/span><\/div>\n<\/div>\n<ul class=\"public-DraftStyleDefault-ul\" data-offset-key=\"dkekb-0-0\">\n<li class=\"public-DraftStyleDefault-unorderedListItem public-DraftStyleDefault-reset public-DraftStyleDefault-depth0 public-DraftStyleDefault-listLTR\" data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"dkekb-0-0\">\n<div class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"dkekb-0-0\"><strong>Syntactic Checking<\/strong><span data-offset-key=\"dkekb-0-1\"><br \/>\n<\/span><span data-offset-key=\"dkekb-4-0\">This kind of checking identifies the syntactic errors present in the program. The compiler examines the sequence of elements of the program. And assures that this sequence forms a valid statement in the source program. <\/span><\/div>\n<\/li>\n<li data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"dkekb-0-0\"><strong>Type Checking<\/strong><span data-offset-key=\"7ohmg-0-1\"><br \/>\n<\/span>It checks the operations present in the program. And assures that it respect the type system of the source language. And if this is not the case the compiler performs the type conversion.<\/li>\n<\/ul>\n<ul>\n<li style=\"list-style-type: none\">\n<ul class=\"public-DraftStyleDefault-ul\" data-offset-key=\"8k2tm-0-0\">\n<li class=\"public-DraftStyleDefault-unorderedListItem public-DraftStyleDefault-reset public-DraftStyleDefault-depth0 public-DraftStyleDefault-listLTR\" data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"8k2tm-0-0\">\n<div class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"8k2tm-0-0\"><span data-offset-key=\"8k2tm-0-0\"><strong>Coercion<\/strong><br \/>\n<\/span>In coercion, the type of operands converts according to the type of operator. For example, consider the expression 2 * 3.14. Now 2 is an integer and 3.14 is a floating-point number. The coercion specified by the language converts integer 2 to floating-point 2.0. Now both the operands are floating-point, the compiler will perform the floating-point operation. This operation will provide a floating-point resultant.<\/div>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li style=\"list-style-type: none\">\n<ul class=\"public-DraftStyleDefault-ul\" data-offset-key=\"e5auu-0-0\">\n<li class=\"public-DraftStyleDefault-unorderedListItem public-DraftStyleDefault-reset public-DraftStyleDefault-depth0 public-DraftStyleDefault-listLTR\" data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"e5auu-0-0\">\n<div class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"e5auu-0-0\"><strong>Overloading<\/strong><span data-offset-key=\"e5auu-0-1\"><br \/>\nWe have studied the concept of overloading in Java. For example, the operator \u2018+\u2019 if applied to the integer performs the addition of two integers. And if applied to the string performs concatenation of the two strings.<br \/>\n<\/span><span data-offset-key=\"8b7d2-0-0\">Thus, the meaning of the operator changes according to the type of operands specified. In the expression x + y is even if one operand is an integer and the other is a string then there occurs a type error.<\/span><\/div>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<p><a name=\"Three-AddressCode\"><\/a><\/p>\n<h3>Three-Address Code<\/h3>\n<div class=\"\" data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"17g6d-0-0\">\n<div class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"17g6d-0-0\">The three-address code is also a form of intermediate representation like a syntax tree. \u00a0The parser generates a syntax tree. And the intermediated code generator generates the three-address code. This intermediate representation is a sequence of assembly-like instructions.<\/div>\n<div data-offset-key=\"17g6d-0-0\"><span data-offset-key=\"a1pbh-0-0\"><strong>Note<\/strong>:<\/span><span data-offset-key=\"a1pbh-0-1\"> It is possible for the compiler to construct a syntax tree and three-address code parallelly.<\/span><\/div>\n<h4 data-offset-key=\"17g6d-0-0\"><span style=\"font-family: Raleway, sans-serif;font-size: 20px\">Three-Address Instructions<\/span><\/h4>\n<div data-offset-key=\"17g6d-0-0\">Three-address instruction has three operands per instruction. And each operand act like a register.<\/div>\n<\/div>\n<ol>\n<li class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"12boe-0-0\"><span class=\"hardreadability\"><span data-offset-key=\"12boe-0-0\">The three-address assignment instruction must have at least one operand on the right side of the instruction<\/span><\/span><span data-offset-key=\"12boe-1-0\">.<\/span><span data-offset-key=\"1inct-0-0\"><br data-text=\"true\" \/><\/span><\/li>\n<li class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"9v1p9-0-0\"><span class=\"hardreadability\"><span data-offset-key=\"9v1p9-0-0\">To hold the value computed by the three-address code instruction, the compiler generates a temporary name<\/span><\/span><span data-offset-key=\"9v1p9-1-0\">.<\/span><span data-offset-key=\"4l44b-0-0\"><br data-text=\"true\" \/><\/span><\/li>\n<li class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"aqsgg-0-0\"><span data-offset-key=\"aqsgg-0-0\">The three-address instructions may have less than three operands.<\/span><\/li>\n<\/ol>\n<div class=\"\" data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"5sb6-0-0\">\n<div class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"5sb6-0-0\"><span data-offset-key=\"5sb6-0-0\">The three-address instruction is of the form:<\/span><\/div>\n<div data-offset-key=\"5sb6-0-0\"><span data-offset-key=\"fagup-0-0\">x = y <\/span><strong>op<\/strong><span data-offset-key=\"fagup-0-2\"> z<\/span><\/div>\n<\/div>\n<div class=\"\" data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"fagup-0-0\">\n<div data-offset-key=\"fagup-0-0\">Here,<\/div>\n<\/div>\n<ul class=\"public-DraftStyleDefault-ul\" data-offset-key=\"90p3-0-0\">\n<li class=\"public-DraftStyleDefault-unorderedListItem public-DraftStyleDefault-reset public-DraftStyleDefault-depth0 public-DraftStyleDefault-listLTR\" data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"90p3-0-0\">\n<div class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"90p3-0-0\"><span data-offset-key=\"90p3-0-0\">y and z are the operands. <\/span><\/div>\n<\/li>\n<li class=\"public-DraftStyleDefault-unorderedListItem public-DraftStyleDefault-depth0 public-DraftStyleDefault-listLTR\" data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"89ltn-0-0\">\n<div class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"89ltn-0-0\"><span data-offset-key=\"89ltn-0-0\">op is the operator.<\/span><\/div>\n<\/li>\n<li class=\"public-DraftStyleDefault-unorderedListItem public-DraftStyleDefault-depth0 public-DraftStyleDefault-listLTR\" data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"89ltn-0-0\">\n<div class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"89ltn-0-0\"><span data-offset-key=\"e0qqf-0-0\">x can be a name or a compiler-generated temporary name (location) that will hold the result.<\/span><\/div>\n<\/li>\n<\/ul>\n<div class=\"\" data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"8qi7t-0-0\">\n<div class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"8qi7t-0-0\"><span data-offset-key=\"57or7-0-0\">The three-address instructions are always executed <\/span><span class=\"adverb\"><span data-offset-key=\"57or7-1-0\">sequentially<\/span><\/span><span data-offset-key=\"57or7-2-0\">. They can even perform the conditional or unconditional jump.<\/span><\/div>\n<\/div>\n<h4>Address and Instruction<\/h4>\n<div class=\"\" data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"5b5b5-0-0\">\n<div class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"5b5b5-0-0\"><span data-offset-key=\"5b5b5-0-0\">The three-address code is based <\/span><span data-offset-key=\"5b5b5-2-0\">on two concepts addresses and the instruction.<\/span><\/div>\n<h5 class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"5b5b5-0-0\"><span style=\"font-family: Raleway, sans-serif;font-size: 18px\">Address:<\/span><\/h5>\n<\/div>\n<ol>\n<li class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"cn9fb-0-0\"><strong>Name<\/strong><span data-offset-key=\"cn9fb-0-1\"><strong>:<\/strong> A name specifies the identity of a variable in the instructions or even the name of the source program. I<span class=\"hardreadability\">n the three-address code<\/span><\/span><span class=\"hardreadability\"><span data-offset-key=\"cn9fb-1-0\">, the name in the instruction appears as the address<\/span><\/span><span data-offset-key=\"cn9fb-2-0\">.<\/span><span data-offset-key=\"6ugpr-0-0\"><br data-text=\"true\" \/><\/span><\/li>\n<li class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"7c53v-0-0\"><strong>Constant<\/strong><span data-offset-key=\"7c53v-0-1\"><strong>:<\/strong> There can be different types of constants that the compiler deal with. The compiler performs the necessary type of conversion when required.<\/span><span data-offset-key=\"2gphq-0-0\"><br data-text=\"true\" \/><\/span><\/li>\n<li class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"crbov-0-0\"><span class=\"hardreadability\"><strong>Compiler-generated temporary<\/strong><span data-offset-key=\"crbov-0-1\">: t is a name generated by the compiler. The compiler generates it each time there is a need for a temporary variable. This address stores the result or a value.<\/span><\/span><span data-offset-key=\"6qgun-0-0\"><br data-text=\"true\" \/><\/span><\/li>\n<\/ol>\n<h5 class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"24j01-0-0\"><span data-offset-key=\"24j01-0-0\">Instructions:<\/span><\/h5>\n<ol>\n<li data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"97ph7-0-0\">\n<div class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"97ph7-0-0\"><strong>Assignment Instructions<\/strong><span data-offset-key=\"8j7sg-0-0\"><br data-text=\"true\" \/><\/span><\/div>\n<ul>\n<li data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"97ph7-0-0\">\n<div class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"97ph7-0-0\"><span data-offset-key=\"ebr0j-0-0\"><strong>x = y op z<\/strong>,<\/span><span data-offset-key=\"ebr0j-0-1\"> here the x, y, and z are addresses and op can be an arithmetic or logical binary operator.|<br \/>\n<\/span><\/div>\n<\/li>\n<li data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"97ph7-0-0\">\n<div class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"97ph7-0-0\"><strong>x = op y<\/strong><span data-offset-key=\"aecg4-0-1\">, where x and y are the addresses and op is a unary operator.<\/span><\/div>\n<\/li>\n<\/ul>\n<\/li>\n<li data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"97ph7-0-0\">\n<div class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"97ph7-0-0\"><strong>Copy Instruction<\/strong><span data-offset-key=\"9i4gk-0-0\"><br data-text=\"true\" \/><\/span><span data-offset-key=\"6atn4-0-0\">The copy instruction <strong>x = y<\/strong>, where x and y are addresses and the value at the address of y is set at the address of x.<\/span><\/div>\n<\/li>\n<li data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"97ph7-0-0\">\n<div class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"97ph7-0-0\"><span data-offset-key=\"11nav-0-0\"><strong>Jump Instruction<\/strong><br \/>\n<\/span><\/div>\n<ul>\n<li data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"97ph7-0-0\">\n<div class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"97ph7-0-0\"><span data-offset-key=\"a0t8e-0-0\">The conditional jump, <\/span><strong>if x goto L<\/strong><span data-offset-key=\"a0t8e-0-2\"> and <\/span><strong>ifFalse x goto K<\/strong><span data-offset-key=\"a0t8e-0-4\">. Here the instruction with label L <\/span><span class=\"passivevoice\"><span data-offset-key=\"a0t8e-1-0\">is executed<\/span><\/span><span data-offset-key=\"a0t8e-2-0\"> if x is true. And if x is false the instruction with label K <\/span><span class=\"passivevoice\"><span data-offset-key=\"a0t8e-3-0\">is executed<\/span><\/span><span data-offset-key=\"a0t8e-4-0\">.<br \/>\n<\/span><\/div>\n<\/li>\n<li data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"97ph7-0-0\">\n<div class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"97ph7-0-0\"><span data-offset-key=\"a0t8e-4-0\"><span data-offset-key=\"a7dg0-0-0\">The conditional jump if x <\/span><strong>relop<\/strong><span data-offset-key=\"a7dg0-0-2\"> y goto L, here <\/span><strong>relop<\/strong><span data-offset-key=\"a7dg0-0-4\"> is the relational operator. And if x stands by the relational operator then the instruction with label L <\/span><span class=\"passivevoice\"><span data-offset-key=\"a7dg0-1-0\">is executed<\/span><\/span><span data-offset-key=\"a7dg0-2-0\">. If not, the instruction next to this conditional instruction <\/span><span class=\"passivevoice\"><span data-offset-key=\"a7dg0-3-0\">is operated<\/span><\/span><span data-offset-key=\"a7dg0-4-0\">.<\/span><\/span><span data-offset-key=\"a0t8e-4-0\"><span data-offset-key=\"a7dg0-4-0\"><br \/>\n<\/span><\/span><\/div>\n<\/li>\n<li data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"97ph7-0-0\">\n<div class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"97ph7-0-0\"><span data-offset-key=\"27cqr-0-0\">Unconditional jump <\/span><span data-offset-key=\"27cqr-0-1\">goto L<\/span><span data-offset-key=\"27cqr-0-2\">, here the instruction with label L <\/span><span class=\"passivevoice\"><span data-offset-key=\"27cqr-1-0\">is executed<\/span><\/span><span data-offset-key=\"27cqr-2-0\"> next.<\/span><\/div>\n<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h5>Advanced Instructions:<\/h5>\n<ol>\n<li data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"97ph7-0-0\"><strong>Procedure Call<\/strong><br \/>\nThe instruction of the form <strong>y = call p<\/strong><span data-offset-key=\"6pg9e-0-2\">, n make a procedure or function call. \u00a0Here p is the name of the procedure and n is the integer that indicates the number of parameters passed. The instruction of the form \u2018<\/span><strong>return y<\/strong><span data-offset-key=\"6pg9e-0-4\">\u2019 here y indicates the returned value.<\/span><\/li>\n<li data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"97ph7-0-0\"><strong>Indexed Copy Instruction<\/strong><br \/>\nThe instruction of form <strong>x = y[i]<\/strong><span data-offset-key=\"1drac-0-2\">, where the value at the location ith memory unit beyond the location y <\/span><span class=\"passivevoice\"><span data-offset-key=\"1drac-1-0\">is set <\/span><\/span><span data-offset-key=\"1drac-2-0\">in x. In the instruction<\/span><strong> x[i] = y<\/strong><span data-offset-key=\"1drac-2-2\">, the value of y <\/span><span class=\"passivevoice\"><span data-offset-key=\"1drac-3-0\">is set <\/span><\/span><span data-offset-key=\"1drac-4-0\">to the ith memory location beyond the location of x.<\/span><\/li>\n<li data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"97ph7-0-0\"><strong>Address and Pointer Assignment<\/strong><br \/>\n<span data-offset-key=\"eo8m3-0-0\">In the instruction of form <\/span><strong>x = &amp;y<\/strong><span data-offset-key=\"eo8m3-0-2\">, here the L value of y <\/span><span class=\"passivevoice\"><span data-offset-key=\"eo8m3-1-0\">is set <\/span><\/span><span data-offset-key=\"eo8m3-2-0\">to x. The instruction<\/span><strong> x = *y<\/strong><span data-offset-key=\"eo8m3-2-2\">, here the r-value of y holds L value of a location say z. And the r-value of z <\/span><span class=\"passivevoice\"><span data-offset-key=\"eo8m3-3-0\">is set <\/span><\/span><span data-offset-key=\"eo8m3-4-0\">to x. The instruction <\/span><strong>*x = y<\/strong><span data-offset-key=\"eo8m3-4-2\"> sets the r-value of y to the location pointed by x.<\/span><\/li>\n<\/ol>\n<p><a name=\"TypesofIntermediateCode\"><\/a><\/p>\n<h3>Types of Intermediate Code<\/h3>\n<p>We can classify the intermediate representation into two types:<\/p>\n<ol>\n<li><strong>High-Level Intermediate Representation<br \/>\n<\/strong>This representation is the very first intermediate representation of the source language. The syntax tree generated by the parser is the high-level representation.<br \/>\nThe high-level intermediate representation provides a hierarchical structure of the source program. This hierarchical structure helps the task such as a static check.<\/li>\n<li><strong>Low-Level Intermediate Representation<br \/>\n<\/strong><span data-offset-key=\"a3aoh-2-0\">After high-level intermediate representation, the next intermediate representation is low-level intermediate representation. The intermediate code generation phase generates the low-level intermediate representation.<br \/>\nThe three-address code is a low-level representation. The three-address code is suitable for machine-dependent tasks. Like register allocation and instruction selection.<\/span><\/li>\n<\/ol>\n<h3><a name=\"BenefitsofIntermediateCodeGeneration\"><\/a><\/h3>\n<h3>Benefits of Intermediate Code Generation<\/h3>\n<ul>\n<li class=\"public-DraftStyleDefault-unorderedListItem public-DraftStyleDefault-reset public-DraftStyleDefault-depth0 public-DraftStyleDefault-listLTR\" data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"9erus-0-0\">\n<div class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"9erus-0-0\"><span data-offset-key=\"9erus-0-0\"><span data-text=\"true\">Consider that a compiler translates a source program <\/span><\/span><span class=\"adverb\"><span data-offset-key=\"9erus-1-0\"><span data-text=\"true\">directly<\/span><\/span><\/span><span data-offset-key=\"9erus-2-0\"><span data-text=\"true\"> into a target program. And it doesn\u2019t generate an intermediate code between. Here we can execute the generated target code only on <\/span><\/span><span data-offset-key=\"9erus-4-0\"><span data-text=\"true\">the machine on which the compiler <\/span><\/span><span class=\"passivevoice\"><span data-offset-key=\"9erus-5-0\"><span data-text=\"true\">was executed<\/span><\/span><\/span><span data-offset-key=\"9erus-6-0\"><span data-text=\"true\">.<\/span><\/span><\/div>\n<\/li>\n<li class=\"public-DraftStyleDefault-unorderedListItem public-DraftStyleDefault-reset public-DraftStyleDefault-depth0 public-DraftStyleDefault-listLTR\" data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"3cubh-0-0\">\n<div class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"3cubh-0-0\"><span data-offset-key=\"3cubh-0-0\"><span data-text=\"true\">In this case, we need <\/span><\/span><span data-offset-key=\"3cubh-2-0\"><span data-text=\"true\">a native compiler for each of the new machines.<\/span><\/span><\/div>\n<\/li>\n<li class=\"public-DraftStyleDefault-unorderedListItem public-DraftStyleDefault-reset public-DraftStyleDefault-depth0 public-DraftStyleDefault-listLTR\" data-block=\"true\" data-editor=\"ecnlq\" data-offset-key=\"3cubh-0-0\">\n<div class=\"public-DraftStyleDefault-block public-DraftStyleDefault-ltr\" data-offset-key=\"3cubh-0-0\"><span data-offset-key=\"70s8k-0-0\">The intermediate code wipes out the need for the full native compiler for each machine.<\/span><\/div>\n<\/li>\n<\/ul>\n<p>So, this is all about intermediate code generation. We have discussed from where the intermediate code generation phase gets its input. And what output it generates. Further, we have also discussed the types of intermediate representation. We have concluded the topic the benefits of the intermediate code generator.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Intermediate code generation is a phase in the compiler. In our earlier content \u2018Compiler in Computer\u2019, we have discussed Intermediate code generation. It gets its input from the semantic analysis phase and serves its output to the code optimizer phase. \u00a0 The intermediate code generator generates some intermediate representation. And from this intermediate representation, the [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[13],"tags":[],"class_list":{"0":"post-3348","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-compiler-design","7":"entry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>What is Intermediate Code Generation? Definition, Three-Address Code, Types, Benefits - Binary Terms<\/title>\n<meta name=\"description\" content=\"Intermediate code generation is a phase in the compiler. we have discussed about it in our earlier content \u2018Compiler in Computer\u2019.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/binaryterms.com\/intermediate-code-generation.html\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What is Intermediate Code Generation? Definition, Three-Address Code, Types, Benefits - Binary Terms\" \/>\n<meta property=\"og:description\" content=\"Intermediate code generation is a phase in the compiler. we have discussed about it in our earlier content \u2018Compiler in Computer\u2019.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/binaryterms.com\/intermediate-code-generation.html\" \/>\n<meta property=\"og:site_name\" content=\"Binary Terms\" \/>\n<meta property=\"article:published_time\" content=\"2022-02-02T07:43:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-02-07T07:19:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/binaryterms.com\/wp-content\/uploads\/2022\/02\/Intermediate-Code-Generation.jpg\" \/>\n<meta name=\"author\" content=\"Neha T\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Neha T\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/binaryterms.com\/intermediate-code-generation.html#article\",\"isPartOf\":{\"@id\":\"https:\/\/binaryterms.com\/intermediate-code-generation.html\"},\"author\":{\"name\":\"Neha T\",\"@id\":\"https:\/\/binaryterms.com\/#\/schema\/person\/e495f1d57f5c0a4c521cc3dba95661fe\"},\"headline\":\"Intermediate Code Generation\",\"datePublished\":\"2022-02-02T07:43:45+00:00\",\"dateModified\":\"2022-02-07T07:19:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/binaryterms.com\/intermediate-code-generation.html\"},\"wordCount\":1401,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/binaryterms.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/binaryterms.com\/intermediate-code-generation.html#primaryimage\"},\"thumbnailUrl\":\"https:\/\/binaryterms.com\/wp-content\/uploads\/2022\/02\/Intermediate-Code-Generation.jpg\",\"articleSection\":[\"Compiler Design\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/binaryterms.com\/intermediate-code-generation.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/binaryterms.com\/intermediate-code-generation.html\",\"url\":\"https:\/\/binaryterms.com\/intermediate-code-generation.html\",\"name\":\"What is Intermediate Code Generation? Definition, Three-Address Code, Types, Benefits - Binary Terms\",\"isPartOf\":{\"@id\":\"https:\/\/binaryterms.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/binaryterms.com\/intermediate-code-generation.html#primaryimage\"},\"image\":{\"@id\":\"https:\/\/binaryterms.com\/intermediate-code-generation.html#primaryimage\"},\"thumbnailUrl\":\"https:\/\/binaryterms.com\/wp-content\/uploads\/2022\/02\/Intermediate-Code-Generation.jpg\",\"datePublished\":\"2022-02-02T07:43:45+00:00\",\"dateModified\":\"2022-02-07T07:19:34+00:00\",\"description\":\"Intermediate code generation is a phase in the compiler. we have discussed about it in our earlier content \u2018Compiler in Computer\u2019.\",\"breadcrumb\":{\"@id\":\"https:\/\/binaryterms.com\/intermediate-code-generation.html#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/binaryterms.com\/intermediate-code-generation.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/binaryterms.com\/intermediate-code-generation.html#primaryimage\",\"url\":\"https:\/\/binaryterms.com\/wp-content\/uploads\/2022\/02\/Intermediate-Code-Generation.jpg\",\"contentUrl\":\"https:\/\/binaryterms.com\/wp-content\/uploads\/2022\/02\/Intermediate-Code-Generation.jpg\",\"width\":682,\"height\":168,\"caption\":\"Intermediate Code Generation\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/binaryterms.com\/intermediate-code-generation.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/binaryterms.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Intermediate Code Generation\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/binaryterms.com\/#website\",\"url\":\"https:\/\/binaryterms.com\/\",\"name\":\"Binary Terms\",\"description\":\"The Computer Science &amp; IT Guide\",\"publisher\":{\"@id\":\"https:\/\/binaryterms.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/binaryterms.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/binaryterms.com\/#organization\",\"name\":\"Binary Terms\",\"url\":\"https:\/\/binaryterms.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/binaryterms.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/binaryterms.com\/wp-content\/uploads\/2020\/05\/binary-terms-logo1.png\",\"contentUrl\":\"https:\/\/binaryterms.com\/wp-content\/uploads\/2020\/05\/binary-terms-logo1.png\",\"width\":400,\"height\":63,\"caption\":\"Binary Terms\"},\"image\":{\"@id\":\"https:\/\/binaryterms.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/binaryterms.com\/#\/schema\/person\/e495f1d57f5c0a4c521cc3dba95661fe\",\"name\":\"Neha T\",\"url\":\"https:\/\/binaryterms.com\/author\/author\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"What is Intermediate Code Generation? Definition, Three-Address Code, Types, Benefits - Binary Terms","description":"Intermediate code generation is a phase in the compiler. we have discussed about it in our earlier content \u2018Compiler in Computer\u2019.","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:\/\/binaryterms.com\/intermediate-code-generation.html","og_locale":"en_GB","og_type":"article","og_title":"What is Intermediate Code Generation? Definition, Three-Address Code, Types, Benefits - Binary Terms","og_description":"Intermediate code generation is a phase in the compiler. we have discussed about it in our earlier content \u2018Compiler in Computer\u2019.","og_url":"https:\/\/binaryterms.com\/intermediate-code-generation.html","og_site_name":"Binary Terms","article_published_time":"2022-02-02T07:43:45+00:00","article_modified_time":"2022-02-07T07:19:34+00:00","og_image":[{"url":"https:\/\/binaryterms.com\/wp-content\/uploads\/2022\/02\/Intermediate-Code-Generation.jpg","type":"","width":"","height":""}],"author":"Neha T","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Neha T","Estimated reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/binaryterms.com\/intermediate-code-generation.html#article","isPartOf":{"@id":"https:\/\/binaryterms.com\/intermediate-code-generation.html"},"author":{"name":"Neha T","@id":"https:\/\/binaryterms.com\/#\/schema\/person\/e495f1d57f5c0a4c521cc3dba95661fe"},"headline":"Intermediate Code Generation","datePublished":"2022-02-02T07:43:45+00:00","dateModified":"2022-02-07T07:19:34+00:00","mainEntityOfPage":{"@id":"https:\/\/binaryterms.com\/intermediate-code-generation.html"},"wordCount":1401,"commentCount":0,"publisher":{"@id":"https:\/\/binaryterms.com\/#organization"},"image":{"@id":"https:\/\/binaryterms.com\/intermediate-code-generation.html#primaryimage"},"thumbnailUrl":"https:\/\/binaryterms.com\/wp-content\/uploads\/2022\/02\/Intermediate-Code-Generation.jpg","articleSection":["Compiler Design"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/binaryterms.com\/intermediate-code-generation.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/binaryterms.com\/intermediate-code-generation.html","url":"https:\/\/binaryterms.com\/intermediate-code-generation.html","name":"What is Intermediate Code Generation? Definition, Three-Address Code, Types, Benefits - Binary Terms","isPartOf":{"@id":"https:\/\/binaryterms.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/binaryterms.com\/intermediate-code-generation.html#primaryimage"},"image":{"@id":"https:\/\/binaryterms.com\/intermediate-code-generation.html#primaryimage"},"thumbnailUrl":"https:\/\/binaryterms.com\/wp-content\/uploads\/2022\/02\/Intermediate-Code-Generation.jpg","datePublished":"2022-02-02T07:43:45+00:00","dateModified":"2022-02-07T07:19:34+00:00","description":"Intermediate code generation is a phase in the compiler. we have discussed about it in our earlier content \u2018Compiler in Computer\u2019.","breadcrumb":{"@id":"https:\/\/binaryterms.com\/intermediate-code-generation.html#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/binaryterms.com\/intermediate-code-generation.html"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/binaryterms.com\/intermediate-code-generation.html#primaryimage","url":"https:\/\/binaryterms.com\/wp-content\/uploads\/2022\/02\/Intermediate-Code-Generation.jpg","contentUrl":"https:\/\/binaryterms.com\/wp-content\/uploads\/2022\/02\/Intermediate-Code-Generation.jpg","width":682,"height":168,"caption":"Intermediate Code Generation"},{"@type":"BreadcrumbList","@id":"https:\/\/binaryterms.com\/intermediate-code-generation.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/binaryterms.com\/"},{"@type":"ListItem","position":2,"name":"Intermediate Code Generation"}]},{"@type":"WebSite","@id":"https:\/\/binaryterms.com\/#website","url":"https:\/\/binaryterms.com\/","name":"Binary Terms","description":"The Computer Science &amp; IT Guide","publisher":{"@id":"https:\/\/binaryterms.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/binaryterms.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/binaryterms.com\/#organization","name":"Binary Terms","url":"https:\/\/binaryterms.com\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/binaryterms.com\/#\/schema\/logo\/image\/","url":"https:\/\/binaryterms.com\/wp-content\/uploads\/2020\/05\/binary-terms-logo1.png","contentUrl":"https:\/\/binaryterms.com\/wp-content\/uploads\/2020\/05\/binary-terms-logo1.png","width":400,"height":63,"caption":"Binary Terms"},"image":{"@id":"https:\/\/binaryterms.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/binaryterms.com\/#\/schema\/person\/e495f1d57f5c0a4c521cc3dba95661fe","name":"Neha T","url":"https:\/\/binaryterms.com\/author\/author"}]}},"_links":{"self":[{"href":"https:\/\/binaryterms.com\/wp-json\/wp\/v2\/posts\/3348","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/binaryterms.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/binaryterms.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/binaryterms.com\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/binaryterms.com\/wp-json\/wp\/v2\/comments?post=3348"}],"version-history":[{"count":15,"href":"https:\/\/binaryterms.com\/wp-json\/wp\/v2\/posts\/3348\/revisions"}],"predecessor-version":[{"id":3356,"href":"https:\/\/binaryterms.com\/wp-json\/wp\/v2\/posts\/3348\/revisions\/3356"}],"wp:attachment":[{"href":"https:\/\/binaryterms.com\/wp-json\/wp\/v2\/media?parent=3348"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/binaryterms.com\/wp-json\/wp\/v2\/categories?post=3348"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/binaryterms.com\/wp-json\/wp\/v2\/tags?post=3348"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}