From 30c740818a70e751c8f2c05868431ab35cf19b43 Mon Sep 17 00:00:00 2001 From: Vineel Kovvuri <1283328+vineelkovvuri@users.noreply.github.com> Date: Thu, 2 Jan 2025 00:31:14 -0800 Subject: [PATCH] Fixups Signed-off-by: Vineel Kovvuri <1283328+vineelkovvuri@users.noreply.github.com> --- .../index.md | 26 +++--- docs/404.html | 2 +- .../index.html | 2 +- docs/blog/c-case-studies/f/index.html | 2 +- docs/blog/compiler-internals/index.html | 2 +- .../index.html | 2 +- docs/blog/index.html | 4 +- docs/blog/index.xml | 50 +++++------ docs/blog/lib-files-101/index.html | 2 +- docs/blog/pci-express-basics-101/index.html | 2 +- .../index.html | 2 +- .../index.html | 13 +-- .../index.html | 2 +- .../usermode-breakpoints-from-kd/index.html | 2 +- .../index.html | 2 +- docs/categories/index.html | 2 +- docs/categories/index.xml | 4 +- docs/courses/c/index.html | 2 +- docs/courses/index.html | 2 +- docs/courses/index.xml | 20 ++--- docs/courses/java/index.html | 2 +- docs/courses/linux/index.html | 2 +- docs/courses/python/index.html | 2 +- docs/index.html | 4 +- docs/index.xml | 82 +++++++++---------- docs/presentations/git-part-1/index.html | 4 +- docs/presentations/git-part-2/index.html | 4 +- docs/presentations/git-part-3/index.html | 4 +- docs/presentations/index.html | 2 +- docs/presentations/index.xml | 20 ++--- docs/presentations/vscode/index.html | 4 +- docs/sitemap.xml | 60 +++++++------- docs/tags/asm/index.html | 2 +- docs/tags/asm/index.xml | 8 +- docs/tags/c/index.html | 2 +- docs/tags/c/index.xml | 12 +-- docs/tags/compilers/index.html | 2 +- docs/tags/compilers/index.xml | 8 +- docs/tags/index.html | 2 +- docs/tags/index.xml | 20 ++--- docs/tags/reversing/index.html | 2 +- docs/tags/reversing/index.xml | 8 +- docs/vlog/index.html | 2 +- docs/vlog/index.xml | 4 +- 44 files changed, 204 insertions(+), 203 deletions(-) diff --git a/content/blog/Signed-Unsigned-Integer-Arithmetic-in-C/index.md b/content/blog/Signed-Unsigned-Integer-Arithmetic-in-C/index.md index 570d9fe..ecebb77 100644 --- a/content/blog/Signed-Unsigned-Integer-Arithmetic-in-C/index.md +++ b/content/blog/Signed-Unsigned-Integer-Arithmetic-in-C/index.md @@ -1,5 +1,5 @@ --- -title: "Signed/unsigned Integer Arithmetic In C" +title: "Signed/Unsigned Integer Arithmetic In C" date: 2019-02-10T18:33:07-07:00 toc: true --- @@ -28,18 +28,18 @@ the size of these basic types are determined. Windows x64 follows LLP64(meaning only 'long long' and pointer size are 64 bit wide), So below are the sizes of the standard types that we are sticking to in this article. -Type | Size ---------------------+--------- -signed char | 1 bytes -unsigned char | 1 bytes -signed short | 2 bytes -unsigned short | 2 bytes -signed int | 4 bytes -unsigned int | 4 bytes -signed long | 4 bytes -unsigned long | 4 bytes -signed long long | 8 bytes -unsigned long long | 8 bytes + Type | Size + --------------------+--------- + signed char | 1 bytes + unsigned char | 1 bytes + signed short | 2 bytes + unsigned short | 2 bytes + signed int | 4 bytes + unsigned int | 4 bytes + signed long | 4 bytes + unsigned long | 4 bytes + signed long long | 8 bytes + unsigned long long | 8 bytes Also, The specification leaves other aspects of C language definition undefined and this leave room for optimizations for compilers. For example, diff --git a/docs/404.html b/docs/404.html index 33d6eb1..d0217ae 100644 --- a/docs/404.html +++ b/docs/404.html @@ -1,6 +1,6 @@ - + 404 Page not found | Vineel Kovvuri diff --git a/docs/blog/a-newbies-introduction-to-compilation-process-and-reverse-engineering/index.html b/docs/blog/a-newbies-introduction-to-compilation-process-and-reverse-engineering/index.html index bc24615..2d76f0d 100644 --- a/docs/blog/a-newbies-introduction-to-compilation-process-and-reverse-engineering/index.html +++ b/docs/blog/a-newbies-introduction-to-compilation-process-and-reverse-engineering/index.html @@ -1,6 +1,6 @@ - + A Newbie's Introduction To Compilation Process And Reverse Engineering | Vineel Kovvuri diff --git a/docs/blog/c-case-studies/f/index.html b/docs/blog/c-case-studies/f/index.html index 1354ea9..7aa9803 100644 --- a/docs/blog/c-case-studies/f/index.html +++ b/docs/blog/c-case-studies/f/index.html @@ -1,6 +1,6 @@ - + Libspng - C Language Case Study | Vineel Kovvuri diff --git a/docs/blog/compiler-internals/index.html b/docs/blog/compiler-internals/index.html index 8419eab..fe1f109 100644 --- a/docs/blog/compiler-internals/index.html +++ b/docs/blog/compiler-internals/index.html @@ -1,6 +1,6 @@ - + Compiler Internals | Vineel Kovvuri diff --git a/docs/blog/how-do-breakpoints-work-in-debuggers/index.html b/docs/blog/how-do-breakpoints-work-in-debuggers/index.html index f4bfb14..a47b942 100644 --- a/docs/blog/how-do-breakpoints-work-in-debuggers/index.html +++ b/docs/blog/how-do-breakpoints-work-in-debuggers/index.html @@ -1,6 +1,6 @@ - + How Do Breakpoints Work In Debuggers? | Vineel Kovvuri diff --git a/docs/blog/index.html b/docs/blog/index.html index 9118124..cd2f0cb 100644 --- a/docs/blog/index.html +++ b/docs/blog/index.html @@ -1,6 +1,6 @@ - + Blogs | Vineel Kovvuri @@ -57,7 +57,7 @@

Blog

  • 2019/02/10 - Signed/unsigned Integer Arithmetic In C - blog + Signed/Unsigned Integer Arithmetic In C - blog
  • diff --git a/docs/blog/index.xml b/docs/blog/index.xml index 65a89a1..9361e79 100644 --- a/docs/blog/index.xml +++ b/docs/blog/index.xml @@ -2,87 +2,87 @@ Blogs on Vineel Kovvuri - /blog/ + //localhost:9999/blog/ Recent content in Blogs on Vineel Kovvuri Hugo -- gohugo.io en-us Fri, 01 Nov 2019 18:33:07 -0700 - + Compiler Internals - /blog/compiler-internals/ + //localhost:9999/blog/compiler-internals/ Fri, 01 Nov 2019 18:33:07 -0700 - /blog/compiler-internals/ + //localhost:9999/blog/compiler-internals/ Basics //a.c int myadd() { int sum = 10; for (int i = 0; i &lt; 100; i++) sum += i; return sum; } int myadd2() { int sum = 10; for (int i = 0; i &lt; 100; i++) sum += i*i; return sum; } int main() { return myadd(); } &gt;cl /c a.c &gt;link /dump /symbols a.obj 008 00000000 SECT3 notype () External | myadd 009 00000050 SECT3 notype () External | myadd2 00A 000000A0 SECT3 notype () External | main The link /dump command dumps the symbols that are part of the obj file. UART - From AVR to Linux to Logic Analyzer - /blog/uart-from-avr-to-linux-to-logic-analyzer/ + //localhost:9999/blog/uart-from-avr-to-linux-to-logic-analyzer/ Fri, 20 Sep 2019 18:33:07 -0700 - /blog/uart-from-avr-to-linux-to-logic-analyzer/ + //localhost:9999/blog/uart-from-avr-to-linux-to-logic-analyzer/ UART - From AVR to Linux to Logic Analyzer Introduction In this article, let&rsquo;s see how a program running on Atmega328PU microcontroller can communicate to external world using UART. In order to run through this exercise we need below equipment. Atmega328PU Microcontroller Breadboard AVR/USBASP programmer USB to TTL Adapater Logic Analyzer Digital Oscilloscope Atmega328PU pinout It is an 8-bit microcontroller(uC) with following pinout. All its digital pins are grouped in to 4 banks(PA/PB/PC/PD). What Does It Take To Write An Emulator In Java? - /blog/what-does-it-take-to-write-an-emulator-in-java/ + //localhost:9999/blog/what-does-it-take-to-write-an-emulator-in-java/ Wed, 10 Apr 2019 18:33:07 -0700 - /blog/what-does-it-take-to-write-an-emulator-in-java/ + //localhost:9999/blog/what-does-it-take-to-write-an-emulator-in-java/ Introduction I am proud, This weekend I did some productive work. I was able to code Chip 8 emulator in Java over a night. I have always been fascinated by them and finally I was able to get the damn thing to work! For those of you who are not familiar with software emulator, It is a software which can emulate the functionality of other hardware or software components. Notable examples are video game emulators(Dosbox ,NES Emulator), general purpose software emulators(QEmu) Setting User Mode Break Points From Kd Aka .process /i Vs .process /r /p - /blog/usermode-breakpoints-from-kd/ + //localhost:9999/blog/usermode-breakpoints-from-kd/ Sun, 10 Mar 2019 18:33:07 -0700 - /blog/usermode-breakpoints-from-kd/ + //localhost:9999/blog/usermode-breakpoints-from-kd/ Introduction When performing KD(Kernel Debugging) in Windows with Windbg if you have to set a break point in a user mode process we should always use .process /i address; g; .reload /user. Lot of good content is written on the internet on this command, but nothing seemed to explain why this command should be used instead of the familiar .process /r /p address. I would like to shed some light on this. - Signed/unsigned Integer Arithmetic In C - /blog/signed-unsigned-integer-arithmetic-in-c/ + Signed/Unsigned Integer Arithmetic In C + //localhost:9999/blog/signed-unsigned-integer-arithmetic-in-c/ Sun, 10 Feb 2019 18:33:07 -0700 - /blog/signed-unsigned-integer-arithmetic-in-c/ + //localhost:9999/blog/signed-unsigned-integer-arithmetic-in-c/ Introduction This article is about understanding how integer conversions happen in C language. The C standard defines the integer conversion rules agnostic to any specific machine architecture. This also makes things more complicated for programmers to understand. First of all, Why do we need integer conversions at all? The answer is simple, we need to have single type for any given expression. Let&rsquo;s say we have an expression when expr1 and expr2 are of different types, we want the resulting expression from this to have one single type. Pdb Files: The Glue Between The Binary File And Source Code - /blog/pdb-files-the-glue-between-the-binary-file-and-source-code/ + //localhost:9999/blog/pdb-files-the-glue-between-the-binary-file-and-source-code/ Thu, 10 Jan 2019 18:33:07 -0700 - /blog/pdb-files-the-glue-between-the-binary-file-and-source-code/ + //localhost:9999/blog/pdb-files-the-glue-between-the-binary-file-and-source-code/ Introduction Have you ever wondered how a debugger magically gets you to the correct pdb and correct sources when debugging an application? This article talks exactly that in the context of Windbg. As you might be aware of, PDB files(also called as symbol files) is the glue between your application binary and the source code. There are two key Environment variables which configures Windbg about where to look for symbols and sources. PCI Express Basics 101 - /blog/pci-express-basics-101/ + //localhost:9999/blog/pci-express-basics-101/ Mon, 10 Dec 2018 18:33:07 -0700 - /blog/pci-express-basics-101/ + //localhost:9999/blog/pci-express-basics-101/ Introduction PCI Express: It is a standard which comes in multiple generations and multiple lane configurations. PCI-E is in its 5th generation, but mostly the current shipping generation is 3rd generation also called as Gen 3. Mainly each generation improves upon the previous generation regarding the speed per lane supported by the protocol. Below is the table for each generation and lane speed For single-lane and 16-lane links, in each direction: Lib Files 101 - /blog/lib-files-101/ + //localhost:9999/blog/lib-files-101/ Sat, 10 Nov 2018 18:33:07 -0700 - /blog/lib-files-101/ + //localhost:9999/blog/lib-files-101/ Introduction During the compilation one of the crucial step after assembling is creating the Object files. The collection of these object files is called a lib file. We can create these .lib files through following visual studio project types Static Library Dynamic Linked Library The format of these .lib files is specified in &lsquo;Archive (Library) File Format.&rsquo; section of PE Format. As per the spec, .lib is an archive of individual . How Do Breakpoints Work In Debuggers? - /blog/how-do-breakpoints-work-in-debuggers/ + //localhost:9999/blog/how-do-breakpoints-work-in-debuggers/ Wed, 10 Oct 2018 18:33:07 -0700 - /blog/how-do-breakpoints-work-in-debuggers/ + //localhost:9999/blog/how-do-breakpoints-work-in-debuggers/ Introduction It&rsquo;s been a while, I have got a chance to blog about low-level stuff. In this article, I am going to explain how breakpoints work in debuggers. I am assuming the reader is already familiar with what a breakpoint is? and how to set it in your debugger of choice. The goal of this post is to explain the interplay between Debugger, Debuggee, Operating System and the CPU. Breakpoints Theory To get there, we have to ask ourselves What does it mean by debugging a program/process? A Newbie's Introduction To Compilation Process And Reverse Engineering - /blog/a-newbies-introduction-to-compilation-process-and-reverse-engineering/ + //localhost:9999/blog/a-newbies-introduction-to-compilation-process-and-reverse-engineering/ Fri, 10 Aug 2018 18:33:07 -0700 - /blog/a-newbies-introduction-to-compilation-process-and-reverse-engineering/ + //localhost:9999/blog/a-newbies-introduction-to-compilation-process-and-reverse-engineering/ Introduction Compilers are surely the complex programs of all times. Even today, writing a compiler with minimum set of tools is considered to be challenging. This tutorial scratches the surface of different compiler phases involved in translating a given source code to executable and also shows how this information is useful in context of reverse engineering. GNU compiler collection provides an excellent set of tools for dissecting the compilation process and to understand the working of bits and bytes in the final executable. Libspng - C Language Case Study - /blog/c-case-studies/f/ + //localhost:9999/blog/c-case-studies/f/ Tue, 10 Jul 2018 18:33:07 -0700 - /blog/c-case-studies/f/ + //localhost:9999/blog/c-case-studies/f/ Build System It uses meson build system to build the library Data Structures It is not using any fancy data structures instead it relies on plain array of objects and uses the traditional realloc function to expand them. Miscellaneous All variables are declared as when needed. This deviates from Linux source code. In Linux kernel, declarations are done only in the beginning of a new scope (either at the start of the function or start of a scope) diff --git a/docs/blog/lib-files-101/index.html b/docs/blog/lib-files-101/index.html index 2889a96..5145349 100644 --- a/docs/blog/lib-files-101/index.html +++ b/docs/blog/lib-files-101/index.html @@ -1,6 +1,6 @@ - + Lib Files 101 | Vineel Kovvuri diff --git a/docs/blog/pci-express-basics-101/index.html b/docs/blog/pci-express-basics-101/index.html index 270ed4e..c4a7956 100644 --- a/docs/blog/pci-express-basics-101/index.html +++ b/docs/blog/pci-express-basics-101/index.html @@ -1,6 +1,6 @@ - + PCI Express Basics 101 | Vineel Kovvuri diff --git a/docs/blog/pdb-files-the-glue-between-the-binary-file-and-source-code/index.html b/docs/blog/pdb-files-the-glue-between-the-binary-file-and-source-code/index.html index c104c84..310e91d 100644 --- a/docs/blog/pdb-files-the-glue-between-the-binary-file-and-source-code/index.html +++ b/docs/blog/pdb-files-the-glue-between-the-binary-file-and-source-code/index.html @@ -1,6 +1,6 @@ - + Pdb Files: The Glue Between The Binary File And Source Code | Vineel Kovvuri diff --git a/docs/blog/signed-unsigned-integer-arithmetic-in-c/index.html b/docs/blog/signed-unsigned-integer-arithmetic-in-c/index.html index 3b6af54..f9d3c24 100644 --- a/docs/blog/signed-unsigned-integer-arithmetic-in-c/index.html +++ b/docs/blog/signed-unsigned-integer-arithmetic-in-c/index.html @@ -1,9 +1,9 @@ - + - Signed/unsigned Integer Arithmetic In C | Vineel Kovvuri + Signed/Unsigned Integer Arithmetic In C | Vineel Kovvuri @@ -27,7 +27,7 @@ @@ -53,8 +53,8 @@

    Introduction

    the size of these basic types are determined. Windows x64 follows LLP64(meaning only ’long long’ and pointer size are 64 bit wide), So below are the sizes of the standard types that we are sticking to in this article.

    -

    Type | Size -——————–+——— +

    Type                | Size
    +--------------------+---------
     signed char         | 1 bytes
     unsigned char       | 1 bytes
     signed short        | 2 bytes
    @@ -64,7 +64,8 @@ 

    Introduction

    signed long | 4 bytes unsigned long | 4 bytes signed long long | 8 bytes -unsigned long long | 8 bytes

    +unsigned long long | 8 bytes +

    Also, The specification leaves other aspects of C language definition undefined and this leave room for optimizations for compilers. For example, the result of signed arithmetic leading to overflow/underflow is not defined diff --git a/docs/blog/uart-from-avr-to-linux-to-logic-analyzer/index.html b/docs/blog/uart-from-avr-to-linux-to-logic-analyzer/index.html index 08dbf13..7086779 100644 --- a/docs/blog/uart-from-avr-to-linux-to-logic-analyzer/index.html +++ b/docs/blog/uart-from-avr-to-linux-to-logic-analyzer/index.html @@ -1,6 +1,6 @@ - + UART - From AVR to Linux to Logic Analyzer | Vineel Kovvuri diff --git a/docs/blog/usermode-breakpoints-from-kd/index.html b/docs/blog/usermode-breakpoints-from-kd/index.html index 03d6cad..b6243ea 100644 --- a/docs/blog/usermode-breakpoints-from-kd/index.html +++ b/docs/blog/usermode-breakpoints-from-kd/index.html @@ -1,6 +1,6 @@ - + Setting User Mode Break Points From Kd Aka .process /i Vs .process /r /p | Vineel Kovvuri diff --git a/docs/blog/what-does-it-take-to-write-an-emulator-in-java/index.html b/docs/blog/what-does-it-take-to-write-an-emulator-in-java/index.html index a324a05..2626a96 100644 --- a/docs/blog/what-does-it-take-to-write-an-emulator-in-java/index.html +++ b/docs/blog/what-does-it-take-to-write-an-emulator-in-java/index.html @@ -1,6 +1,6 @@ - + What Does It Take To Write An Emulator In Java? | Vineel Kovvuri diff --git a/docs/categories/index.html b/docs/categories/index.html index 66bcb77..1a00eeb 100644 --- a/docs/categories/index.html +++ b/docs/categories/index.html @@ -1,6 +1,6 @@ - + Categories | Vineel Kovvuri diff --git a/docs/categories/index.xml b/docs/categories/index.xml index 6c7d104..0c1a72a 100644 --- a/docs/categories/index.xml +++ b/docs/categories/index.xml @@ -2,10 +2,10 @@ Categories on Vineel Kovvuri - /categories/ + //localhost:9999/categories/ Recent content in Categories on Vineel Kovvuri Hugo -- gohugo.io en-us - + diff --git a/docs/courses/c/index.html b/docs/courses/c/index.html index 23b8eca..b2092da 100644 --- a/docs/courses/c/index.html +++ b/docs/courses/c/index.html @@ -1,6 +1,6 @@ - + C Language Course Structure | Vineel Kovvuri diff --git a/docs/courses/index.html b/docs/courses/index.html index 055b509..055606d 100644 --- a/docs/courses/index.html +++ b/docs/courses/index.html @@ -1,6 +1,6 @@ - + Courses | Vineel Kovvuri diff --git a/docs/courses/index.xml b/docs/courses/index.xml index e198cef..ba2eb34 100644 --- a/docs/courses/index.xml +++ b/docs/courses/index.xml @@ -2,37 +2,37 @@ Courses on Vineel Kovvuri - /courses/ + //localhost:9999/courses/ Recent content in Courses on Vineel Kovvuri Hugo -- gohugo.io en-us - + C Language Course Structure - /courses/c/ + //localhost:9999/courses/c/ Mon, 01 Jan 0001 00:00:00 +0000 - /courses/c/ + //localhost:9999/courses/c/ C Some Fundamentals Compiling And Running Your First Program Variables, Data Types, And Arithmetic Expressions Program Looping Making Decisions Working With Arrays Working With Functions Working With Structures Character Strings Pointers Operations On Bits The Preprocessor Extending Data Types With The Enumerated Data Type, Type Definitions, And Data Type Conversions Working With Larger Programs Input And Output Operations In C Miscellaneous And Advanced Features Debugging Programs Object-Oriented Programming The Standard C Library Resources C Programming Notes for Professionals Java Course Structure - /courses/java/ + //localhost:9999/courses/java/ Mon, 01 Jan 0001 00:00:00 +0000 - /courses/java/ + //localhost:9999/courses/java/ Java The Java Language The History and Evolution of Java An Overview of Java Data Types, Variables, and Arrays Operators Control Statements Introducing Classes A Closer Look at Methods and Classes Inheritance Packages and Interfaces Exception Handling Multithreaded Programming Enumerations, Autoboxing, and Annotations I/O, Try-with-Resources, and Other Topics Generics Lambda Expressions Modules Switch Expressions, Records, and Other Recently Added Features The Java Library String Handling Exploring java.lang java.util Part 1: The Collections Framework java. Linux Course Structure - /courses/linux/ + //localhost:9999/courses/linux/ Mon, 01 Jan 0001 00:00:00 +0000 - /courses/linux/ + //localhost:9999/courses/linux/ Linux Learning The Shell What Is The Shell Navigation Exploring The System Manipulating Files And Directories Working With Commands Redirection Seeing The World As The Shell Sees It Advanced Keyboard Tricks Permissions Processes Configuration And The Environment The Environment A Gentle Introduction To Vi Customizing The Prompt Common Tasks And Essential Tools Package Management Storage Media Networking Searching For Files Archiving And Backup Regular Expressions Text Processing Formatting Output Printing Compiling Programs Writing Shell Scripts Writing Your First Script Starting A Project Top Down Design Flow Control Branching With If Reading Keyboard Input Flow Control Looping With While Until Troubleshooting Flow Control Branching With Case Positional Parameters Flow Control Looping With For Strings And Numbers Arrays Resources Linux Commands Notes for Professionals Python Course Structure - /courses/python/ + //localhost:9999/courses/python/ Mon, 01 Jan 0001 00:00:00 +0000 - /courses/python/ + //localhost:9999/courses/python/ Python Getting Started A Python Q&amp;A Session How Python Runs Programs How You Run Programs Types And Operations Introducing Python Object Types Numeric Types The Dynamic Typing Interlude String Fundamentals Lists And Dictionaries Tuples, Files, And Everything Else Statements And Syntax Introducing Python Statements Assignments, Expressions, And Prints If Tests And Syntax Rules While And For Loops Iterations And Comprehensions The Documentation Interlude Functions And Generators Function Basics Scopes Arguments Advanced Function Topics Comprehensions And Generations The Benchmarking Interlude Modules And Packages Modules: The Big Picture Module Coding Basics Module Packages Advanced Module Topics Classes And OOP OOP: The Big Picture Class Coding Basics A More Realistic Example Class Coding Details Operator Overloading Designing With Classes Advanced Class Topics Exceptions And Tools Exception Basics Exception Coding Details Exception Objects Designing With Exceptions Advanced Topics Unicode And Byte Strings Managed Attributes Resources Python Notes for Professionals diff --git a/docs/courses/java/index.html b/docs/courses/java/index.html index 68ec3c2..e92708b 100644 --- a/docs/courses/java/index.html +++ b/docs/courses/java/index.html @@ -1,6 +1,6 @@ - + Java Course Structure | Vineel Kovvuri diff --git a/docs/courses/linux/index.html b/docs/courses/linux/index.html index d41f747..b525bea 100644 --- a/docs/courses/linux/index.html +++ b/docs/courses/linux/index.html @@ -1,6 +1,6 @@ - + Linux Course Structure | Vineel Kovvuri diff --git a/docs/courses/python/index.html b/docs/courses/python/index.html index 03156f4..58f562b 100644 --- a/docs/courses/python/index.html +++ b/docs/courses/python/index.html @@ -1,6 +1,6 @@ - + Python Course Structure | Vineel Kovvuri diff --git a/docs/index.html b/docs/index.html index c3747c1..89f1819 100644 --- a/docs/index.html +++ b/docs/index.html @@ -3,7 +3,7 @@ - + Home | Vineel Kovvuri @@ -79,7 +79,7 @@

    Blog

  • 2019/02/10 - Signed/unsigned Integer Arithmetic In C + Signed/Unsigned Integer Arithmetic In C
  • diff --git a/docs/index.xml b/docs/index.xml index 8e63096..4798852 100644 --- a/docs/index.xml +++ b/docs/index.xml @@ -2,143 +2,143 @@ Home on Vineel Kovvuri - / + //localhost:9999/ Recent content in Home on Vineel Kovvuri Hugo -- gohugo.io en-us Fri, 01 Nov 2019 18:33:07 -0700 - + Compiler Internals - /blog/compiler-internals/ + //localhost:9999/blog/compiler-internals/ Fri, 01 Nov 2019 18:33:07 -0700 - /blog/compiler-internals/ + //localhost:9999/blog/compiler-internals/ Basics //a.c int myadd() { int sum = 10; for (int i = 0; i &lt; 100; i++) sum += i; return sum; } int myadd2() { int sum = 10; for (int i = 0; i &lt; 100; i++) sum += i*i; return sum; } int main() { return myadd(); } &gt;cl /c a.c &gt;link /dump /symbols a.obj 008 00000000 SECT3 notype () External | myadd 009 00000050 SECT3 notype () External | myadd2 00A 000000A0 SECT3 notype () External | main The link /dump command dumps the symbols that are part of the obj file. UART - From AVR to Linux to Logic Analyzer - /blog/uart-from-avr-to-linux-to-logic-analyzer/ + //localhost:9999/blog/uart-from-avr-to-linux-to-logic-analyzer/ Fri, 20 Sep 2019 18:33:07 -0700 - /blog/uart-from-avr-to-linux-to-logic-analyzer/ + //localhost:9999/blog/uart-from-avr-to-linux-to-logic-analyzer/ UART - From AVR to Linux to Logic Analyzer Introduction In this article, let&rsquo;s see how a program running on Atmega328PU microcontroller can communicate to external world using UART. In order to run through this exercise we need below equipment. Atmega328PU Microcontroller Breadboard AVR/USBASP programmer USB to TTL Adapater Logic Analyzer Digital Oscilloscope Atmega328PU pinout It is an 8-bit microcontroller(uC) with following pinout. All its digital pins are grouped in to 4 banks(PA/PB/PC/PD). What Does It Take To Write An Emulator In Java? - /blog/what-does-it-take-to-write-an-emulator-in-java/ + //localhost:9999/blog/what-does-it-take-to-write-an-emulator-in-java/ Wed, 10 Apr 2019 18:33:07 -0700 - /blog/what-does-it-take-to-write-an-emulator-in-java/ + //localhost:9999/blog/what-does-it-take-to-write-an-emulator-in-java/ Introduction I am proud, This weekend I did some productive work. I was able to code Chip 8 emulator in Java over a night. I have always been fascinated by them and finally I was able to get the damn thing to work! For those of you who are not familiar with software emulator, It is a software which can emulate the functionality of other hardware or software components. Notable examples are video game emulators(Dosbox ,NES Emulator), general purpose software emulators(QEmu) Setting User Mode Break Points From Kd Aka .process /i Vs .process /r /p - /blog/usermode-breakpoints-from-kd/ + //localhost:9999/blog/usermode-breakpoints-from-kd/ Sun, 10 Mar 2019 18:33:07 -0700 - /blog/usermode-breakpoints-from-kd/ + //localhost:9999/blog/usermode-breakpoints-from-kd/ Introduction When performing KD(Kernel Debugging) in Windows with Windbg if you have to set a break point in a user mode process we should always use .process /i address; g; .reload /user. Lot of good content is written on the internet on this command, but nothing seemed to explain why this command should be used instead of the familiar .process /r /p address. I would like to shed some light on this. - Signed/unsigned Integer Arithmetic In C - /blog/signed-unsigned-integer-arithmetic-in-c/ + Signed/Unsigned Integer Arithmetic In C + //localhost:9999/blog/signed-unsigned-integer-arithmetic-in-c/ Sun, 10 Feb 2019 18:33:07 -0700 - /blog/signed-unsigned-integer-arithmetic-in-c/ + //localhost:9999/blog/signed-unsigned-integer-arithmetic-in-c/ Introduction This article is about understanding how integer conversions happen in C language. The C standard defines the integer conversion rules agnostic to any specific machine architecture. This also makes things more complicated for programmers to understand. First of all, Why do we need integer conversions at all? The answer is simple, we need to have single type for any given expression. Let&rsquo;s say we have an expression when expr1 and expr2 are of different types, we want the resulting expression from this to have one single type. Pdb Files: The Glue Between The Binary File And Source Code - /blog/pdb-files-the-glue-between-the-binary-file-and-source-code/ + //localhost:9999/blog/pdb-files-the-glue-between-the-binary-file-and-source-code/ Thu, 10 Jan 2019 18:33:07 -0700 - /blog/pdb-files-the-glue-between-the-binary-file-and-source-code/ + //localhost:9999/blog/pdb-files-the-glue-between-the-binary-file-and-source-code/ Introduction Have you ever wondered how a debugger magically gets you to the correct pdb and correct sources when debugging an application? This article talks exactly that in the context of Windbg. As you might be aware of, PDB files(also called as symbol files) is the glue between your application binary and the source code. There are two key Environment variables which configures Windbg about where to look for symbols and sources. PCI Express Basics 101 - /blog/pci-express-basics-101/ + //localhost:9999/blog/pci-express-basics-101/ Mon, 10 Dec 2018 18:33:07 -0700 - /blog/pci-express-basics-101/ + //localhost:9999/blog/pci-express-basics-101/ Introduction PCI Express: It is a standard which comes in multiple generations and multiple lane configurations. PCI-E is in its 5th generation, but mostly the current shipping generation is 3rd generation also called as Gen 3. Mainly each generation improves upon the previous generation regarding the speed per lane supported by the protocol. Below is the table for each generation and lane speed For single-lane and 16-lane links, in each direction: Lib Files 101 - /blog/lib-files-101/ + //localhost:9999/blog/lib-files-101/ Sat, 10 Nov 2018 18:33:07 -0700 - /blog/lib-files-101/ + //localhost:9999/blog/lib-files-101/ Introduction During the compilation one of the crucial step after assembling is creating the Object files. The collection of these object files is called a lib file. We can create these .lib files through following visual studio project types Static Library Dynamic Linked Library The format of these .lib files is specified in &lsquo;Archive (Library) File Format.&rsquo; section of PE Format. As per the spec, .lib is an archive of individual . How Do Breakpoints Work In Debuggers? - /blog/how-do-breakpoints-work-in-debuggers/ + //localhost:9999/blog/how-do-breakpoints-work-in-debuggers/ Wed, 10 Oct 2018 18:33:07 -0700 - /blog/how-do-breakpoints-work-in-debuggers/ + //localhost:9999/blog/how-do-breakpoints-work-in-debuggers/ Introduction It&rsquo;s been a while, I have got a chance to blog about low-level stuff. In this article, I am going to explain how breakpoints work in debuggers. I am assuming the reader is already familiar with what a breakpoint is? and how to set it in your debugger of choice. The goal of this post is to explain the interplay between Debugger, Debuggee, Operating System and the CPU. Breakpoints Theory To get there, we have to ask ourselves What does it mean by debugging a program/process? A Newbie's Introduction To Compilation Process And Reverse Engineering - /blog/a-newbies-introduction-to-compilation-process-and-reverse-engineering/ + //localhost:9999/blog/a-newbies-introduction-to-compilation-process-and-reverse-engineering/ Fri, 10 Aug 2018 18:33:07 -0700 - /blog/a-newbies-introduction-to-compilation-process-and-reverse-engineering/ + //localhost:9999/blog/a-newbies-introduction-to-compilation-process-and-reverse-engineering/ Introduction Compilers are surely the complex programs of all times. Even today, writing a compiler with minimum set of tools is considered to be challenging. This tutorial scratches the surface of different compiler phases involved in translating a given source code to executable and also shows how this information is useful in context of reverse engineering. GNU compiler collection provides an excellent set of tools for dissecting the compilation process and to understand the working of bits and bytes in the final executable. Libspng - C Language Case Study - /blog/c-case-studies/f/ + //localhost:9999/blog/c-case-studies/f/ Tue, 10 Jul 2018 18:33:07 -0700 - /blog/c-case-studies/f/ + //localhost:9999/blog/c-case-studies/f/ Build System It uses meson build system to build the library Data Structures It is not using any fancy data structures instead it relies on plain array of objects and uses the traditional realloc function to expand them. Miscellaneous All variables are declared as when needed. This deviates from Linux source code. In Linux kernel, declarations are done only in the beginning of a new scope (either at the start of the function or start of a scope) C Language Course Structure - /courses/c/ + //localhost:9999/courses/c/ Mon, 01 Jan 0001 00:00:00 +0000 - /courses/c/ + //localhost:9999/courses/c/ C Some Fundamentals Compiling And Running Your First Program Variables, Data Types, And Arithmetic Expressions Program Looping Making Decisions Working With Arrays Working With Functions Working With Structures Character Strings Pointers Operations On Bits The Preprocessor Extending Data Types With The Enumerated Data Type, Type Definitions, And Data Type Conversions Working With Larger Programs Input And Output Operations In C Miscellaneous And Advanced Features Debugging Programs Object-Oriented Programming The Standard C Library Resources C Programming Notes for Professionals Git Presentation - Part 1 - /presentations/git-part-1/ + //localhost:9999/presentations/git-part-1/ Mon, 01 Jan 0001 00:00:00 +0000 - /presentations/git-part-1/ + //localhost:9999/presentations/git-part-1/ Previous Next &nbsp; &nbsp; / [pdf] View the PDF file here. Git Presentation - Part 2 - /presentations/git-part-2/ + //localhost:9999/presentations/git-part-2/ Mon, 01 Jan 0001 00:00:00 +0000 - /presentations/git-part-2/ + //localhost:9999/presentations/git-part-2/ Previous Next &nbsp; &nbsp; / [pdf] View the PDF file here. Git Presentation - Part 3 - /presentations/git-part-3/ + //localhost:9999/presentations/git-part-3/ Mon, 01 Jan 0001 00:00:00 +0000 - /presentations/git-part-3/ + //localhost:9999/presentations/git-part-3/ Previous Next &nbsp; &nbsp; / [pdf] View the PDF file here. Java Course Structure - /courses/java/ + //localhost:9999/courses/java/ Mon, 01 Jan 0001 00:00:00 +0000 - /courses/java/ + //localhost:9999/courses/java/ Java The Java Language The History and Evolution of Java An Overview of Java Data Types, Variables, and Arrays Operators Control Statements Introducing Classes A Closer Look at Methods and Classes Inheritance Packages and Interfaces Exception Handling Multithreaded Programming Enumerations, Autoboxing, and Annotations I/O, Try-with-Resources, and Other Topics Generics Lambda Expressions Modules Switch Expressions, Records, and Other Recently Added Features The Java Library String Handling Exploring java.lang java.util Part 1: The Collections Framework java. Linux Course Structure - /courses/linux/ + //localhost:9999/courses/linux/ Mon, 01 Jan 0001 00:00:00 +0000 - /courses/linux/ + //localhost:9999/courses/linux/ Linux Learning The Shell What Is The Shell Navigation Exploring The System Manipulating Files And Directories Working With Commands Redirection Seeing The World As The Shell Sees It Advanced Keyboard Tricks Permissions Processes Configuration And The Environment The Environment A Gentle Introduction To Vi Customizing The Prompt Common Tasks And Essential Tools Package Management Storage Media Networking Searching For Files Archiving And Backup Regular Expressions Text Processing Formatting Output Printing Compiling Programs Writing Shell Scripts Writing Your First Script Starting A Project Top Down Design Flow Control Branching With If Reading Keyboard Input Flow Control Looping With While Until Troubleshooting Flow Control Branching With Case Positional Parameters Flow Control Looping With For Strings And Numbers Arrays Resources Linux Commands Notes for Professionals Python Course Structure - /courses/python/ + //localhost:9999/courses/python/ Mon, 01 Jan 0001 00:00:00 +0000 - /courses/python/ + //localhost:9999/courses/python/ Python Getting Started A Python Q&amp;A Session How Python Runs Programs How You Run Programs Types And Operations Introducing Python Object Types Numeric Types The Dynamic Typing Interlude String Fundamentals Lists And Dictionaries Tuples, Files, And Everything Else Statements And Syntax Introducing Python Statements Assignments, Expressions, And Prints If Tests And Syntax Rules While And For Loops Iterations And Comprehensions The Documentation Interlude Functions And Generators Function Basics Scopes Arguments Advanced Function Topics Comprehensions And Generations The Benchmarking Interlude Modules And Packages Modules: The Big Picture Module Coding Basics Module Packages Advanced Module Topics Classes And OOP OOP: The Big Picture Class Coding Basics A More Realistic Example Class Coding Details Operator Overloading Designing With Classes Advanced Class Topics Exceptions And Tools Exception Basics Exception Coding Details Exception Objects Designing With Exceptions Advanced Topics Unicode And Byte Strings Managed Attributes Resources Python Notes for Professionals Visual Studio Code - /presentations/vscode/ + //localhost:9999/presentations/vscode/ Mon, 01 Jan 0001 00:00:00 +0000 - /presentations/vscode/ + //localhost:9999/presentations/vscode/ Previous Next &nbsp; &nbsp; / [pdf] View the PDF file here. diff --git a/docs/presentations/git-part-1/index.html b/docs/presentations/git-part-1/index.html index 859134b..18e5303 100644 --- a/docs/presentations/git-part-1/index.html +++ b/docs/presentations/git-part-1/index.html @@ -1,6 +1,6 @@ - + Git Presentation - Part 1 | Vineel Kovvuri @@ -157,7 +157,7 @@

    Git Presentation - Part 1

    if (pdfjsLib.GlobalWorkerOptions.workerSrc == '') - pdfjsLib.GlobalWorkerOptions.workerSrc = "\/" + 'js/pdf-js/build/pdf.worker.js'; + pdfjsLib.GlobalWorkerOptions.workerSrc = "\/\/localhost:9999\/" + 'js/pdf-js/build/pdf.worker.js'; var pdfDoc = null, diff --git a/docs/presentations/git-part-2/index.html b/docs/presentations/git-part-2/index.html index 6d5f0f7..6239aea 100644 --- a/docs/presentations/git-part-2/index.html +++ b/docs/presentations/git-part-2/index.html @@ -1,6 +1,6 @@ - + Git Presentation - Part 2 | Vineel Kovvuri @@ -157,7 +157,7 @@

    Git Presentation - Part 2

    if (pdfjsLib.GlobalWorkerOptions.workerSrc == '') - pdfjsLib.GlobalWorkerOptions.workerSrc = "\/" + 'js/pdf-js/build/pdf.worker.js'; + pdfjsLib.GlobalWorkerOptions.workerSrc = "\/\/localhost:9999\/" + 'js/pdf-js/build/pdf.worker.js'; var pdfDoc = null, diff --git a/docs/presentations/git-part-3/index.html b/docs/presentations/git-part-3/index.html index 3c9f8ce..5b96d13 100644 --- a/docs/presentations/git-part-3/index.html +++ b/docs/presentations/git-part-3/index.html @@ -1,6 +1,6 @@ - + Git Presentation - Part 3 | Vineel Kovvuri @@ -157,7 +157,7 @@

    Git Presentation - Part 3

    if (pdfjsLib.GlobalWorkerOptions.workerSrc == '') - pdfjsLib.GlobalWorkerOptions.workerSrc = "\/" + 'js/pdf-js/build/pdf.worker.js'; + pdfjsLib.GlobalWorkerOptions.workerSrc = "\/\/localhost:9999\/" + 'js/pdf-js/build/pdf.worker.js'; var pdfDoc = null, diff --git a/docs/presentations/index.html b/docs/presentations/index.html index f2f4f6f..5776d79 100644 --- a/docs/presentations/index.html +++ b/docs/presentations/index.html @@ -1,6 +1,6 @@ - + Presentations | Vineel Kovvuri diff --git a/docs/presentations/index.xml b/docs/presentations/index.xml index f9827cf..96c874f 100644 --- a/docs/presentations/index.xml +++ b/docs/presentations/index.xml @@ -2,37 +2,37 @@ Presentations on Vineel Kovvuri - /presentations/ + //localhost:9999/presentations/ Recent content in Presentations on Vineel Kovvuri Hugo -- gohugo.io en-us - + Git Presentation - Part 1 - /presentations/git-part-1/ + //localhost:9999/presentations/git-part-1/ Mon, 01 Jan 0001 00:00:00 +0000 - /presentations/git-part-1/ + //localhost:9999/presentations/git-part-1/ Previous Next &nbsp; &nbsp; / [pdf] View the PDF file here. Git Presentation - Part 2 - /presentations/git-part-2/ + //localhost:9999/presentations/git-part-2/ Mon, 01 Jan 0001 00:00:00 +0000 - /presentations/git-part-2/ + //localhost:9999/presentations/git-part-2/ Previous Next &nbsp; &nbsp; / [pdf] View the PDF file here. Git Presentation - Part 3 - /presentations/git-part-3/ + //localhost:9999/presentations/git-part-3/ Mon, 01 Jan 0001 00:00:00 +0000 - /presentations/git-part-3/ + //localhost:9999/presentations/git-part-3/ Previous Next &nbsp; &nbsp; / [pdf] View the PDF file here. Visual Studio Code - /presentations/vscode/ + //localhost:9999/presentations/vscode/ Mon, 01 Jan 0001 00:00:00 +0000 - /presentations/vscode/ + //localhost:9999/presentations/vscode/ Previous Next &nbsp; &nbsp; / [pdf] View the PDF file here. diff --git a/docs/presentations/vscode/index.html b/docs/presentations/vscode/index.html index bc7a67b..9caaa29 100644 --- a/docs/presentations/vscode/index.html +++ b/docs/presentations/vscode/index.html @@ -1,6 +1,6 @@ - + Visual Studio Code | Vineel Kovvuri @@ -157,7 +157,7 @@

    Visual Studio Code

    if (pdfjsLib.GlobalWorkerOptions.workerSrc == '') - pdfjsLib.GlobalWorkerOptions.workerSrc = "\/" + 'js/pdf-js/build/pdf.worker.js'; + pdfjsLib.GlobalWorkerOptions.workerSrc = "\/\/localhost:9999\/" + 'js/pdf-js/build/pdf.worker.js'; var pdfDoc = null, diff --git a/docs/sitemap.xml b/docs/sitemap.xml index 4cb14b1..0d456c4 100644 --- a/docs/sitemap.xml +++ b/docs/sitemap.xml @@ -2,82 +2,82 @@ - /blog/ + //localhost:9999/blog/ 2019-11-01T18:33:07-07:00 - /blog/compiler-internals/ + //localhost:9999/blog/compiler-internals/ 2019-11-01T18:33:07-07:00 - /tags/compilers/ + //localhost:9999/tags/compilers/ 2019-11-01T18:33:07-07:00 - / + //localhost:9999/ 2019-11-01T18:33:07-07:00 - /tags/ + //localhost:9999/tags/ 2019-11-01T18:33:07-07:00 - /blog/uart-from-avr-to-linux-to-logic-analyzer/ + //localhost:9999/blog/uart-from-avr-to-linux-to-logic-analyzer/ 2019-09-20T18:33:07-07:00 - /blog/what-does-it-take-to-write-an-emulator-in-java/ + //localhost:9999/blog/what-does-it-take-to-write-an-emulator-in-java/ 2019-04-10T18:33:07-07:00 - /blog/usermode-breakpoints-from-kd/ + //localhost:9999/blog/usermode-breakpoints-from-kd/ 2019-03-10T18:33:07-07:00 - /blog/signed-unsigned-integer-arithmetic-in-c/ + //localhost:9999/blog/signed-unsigned-integer-arithmetic-in-c/ 2019-02-10T18:33:07-07:00 - /blog/pdb-files-the-glue-between-the-binary-file-and-source-code/ + //localhost:9999/blog/pdb-files-the-glue-between-the-binary-file-and-source-code/ 2019-01-10T18:33:07-07:00 - /blog/pci-express-basics-101/ + //localhost:9999/blog/pci-express-basics-101/ 2018-12-10T18:33:07-07:00 - /blog/lib-files-101/ + //localhost:9999/blog/lib-files-101/ 2018-11-10T18:33:07-07:00 - /blog/how-do-breakpoints-work-in-debuggers/ + //localhost:9999/blog/how-do-breakpoints-work-in-debuggers/ 2018-10-10T18:33:07-07:00 - /blog/a-newbies-introduction-to-compilation-process-and-reverse-engineering/ + //localhost:9999/blog/a-newbies-introduction-to-compilation-process-and-reverse-engineering/ 2018-08-10T18:33:07-07:00 - /tags/asm/ + //localhost:9999/tags/asm/ 2018-08-10T18:33:07-07:00 - /tags/c/ + //localhost:9999/tags/c/ 2018-08-10T18:33:07-07:00 - /tags/reversing/ + //localhost:9999/tags/reversing/ 2018-08-10T18:33:07-07:00 - /blog/c-case-studies/f/ + //localhost:9999/blog/c-case-studies/f/ 2018-07-10T18:33:07-07:00 - /courses/c/ + //localhost:9999/courses/c/ - /categories/ + //localhost:9999/categories/ - /courses/ + //localhost:9999/courses/ - /presentations/git-part-1/ + //localhost:9999/presentations/git-part-1/ - /presentations/git-part-2/ + //localhost:9999/presentations/git-part-2/ - /presentations/git-part-3/ + //localhost:9999/presentations/git-part-3/ - /courses/java/ + //localhost:9999/courses/java/ - /courses/linux/ + //localhost:9999/courses/linux/ - /presentations/ + //localhost:9999/presentations/ - /courses/python/ + //localhost:9999/courses/python/ - /presentations/vscode/ + //localhost:9999/presentations/vscode/ - /vlog/ + //localhost:9999/vlog/ diff --git a/docs/tags/asm/index.html b/docs/tags/asm/index.html index 8c2e660..67e5087 100644 --- a/docs/tags/asm/index.html +++ b/docs/tags/asm/index.html @@ -1,6 +1,6 @@ - + Asm | Vineel Kovvuri diff --git a/docs/tags/asm/index.xml b/docs/tags/asm/index.xml index fad6744..4146658 100644 --- a/docs/tags/asm/index.xml +++ b/docs/tags/asm/index.xml @@ -2,17 +2,17 @@ Asm on Vineel Kovvuri - /tags/asm/ + //localhost:9999/tags/asm/ Recent content in Asm on Vineel Kovvuri Hugo -- gohugo.io en-us Fri, 10 Aug 2018 18:33:07 -0700 - + A Newbie's Introduction To Compilation Process And Reverse Engineering - /blog/a-newbies-introduction-to-compilation-process-and-reverse-engineering/ + //localhost:9999/blog/a-newbies-introduction-to-compilation-process-and-reverse-engineering/ Fri, 10 Aug 2018 18:33:07 -0700 - /blog/a-newbies-introduction-to-compilation-process-and-reverse-engineering/ + //localhost:9999/blog/a-newbies-introduction-to-compilation-process-and-reverse-engineering/ Introduction Compilers are surely the complex programs of all times. Even today, writing a compiler with minimum set of tools is considered to be challenging. This tutorial scratches the surface of different compiler phases involved in translating a given source code to executable and also shows how this information is useful in context of reverse engineering. GNU compiler collection provides an excellent set of tools for dissecting the compilation process and to understand the working of bits and bytes in the final executable. diff --git a/docs/tags/c/index.html b/docs/tags/c/index.html index f62afb2..89dd2c6 100644 --- a/docs/tags/c/index.html +++ b/docs/tags/c/index.html @@ -1,6 +1,6 @@ - + C | Vineel Kovvuri diff --git a/docs/tags/c/index.xml b/docs/tags/c/index.xml index 4b84e86..b218ff5 100644 --- a/docs/tags/c/index.xml +++ b/docs/tags/c/index.xml @@ -2,24 +2,24 @@ C on Vineel Kovvuri - /tags/c/ + //localhost:9999/tags/c/ Recent content in C on Vineel Kovvuri Hugo -- gohugo.io en-us Fri, 10 Aug 2018 18:33:07 -0700 - + A Newbie's Introduction To Compilation Process And Reverse Engineering - /blog/a-newbies-introduction-to-compilation-process-and-reverse-engineering/ + //localhost:9999/blog/a-newbies-introduction-to-compilation-process-and-reverse-engineering/ Fri, 10 Aug 2018 18:33:07 -0700 - /blog/a-newbies-introduction-to-compilation-process-and-reverse-engineering/ + //localhost:9999/blog/a-newbies-introduction-to-compilation-process-and-reverse-engineering/ Introduction Compilers are surely the complex programs of all times. Even today, writing a compiler with minimum set of tools is considered to be challenging. This tutorial scratches the surface of different compiler phases involved in translating a given source code to executable and also shows how this information is useful in context of reverse engineering. GNU compiler collection provides an excellent set of tools for dissecting the compilation process and to understand the working of bits and bytes in the final executable. Libspng - C Language Case Study - /blog/c-case-studies/f/ + //localhost:9999/blog/c-case-studies/f/ Tue, 10 Jul 2018 18:33:07 -0700 - /blog/c-case-studies/f/ + //localhost:9999/blog/c-case-studies/f/ Build System It uses meson build system to build the library Data Structures It is not using any fancy data structures instead it relies on plain array of objects and uses the traditional realloc function to expand them. Miscellaneous All variables are declared as when needed. This deviates from Linux source code. In Linux kernel, declarations are done only in the beginning of a new scope (either at the start of the function or start of a scope) diff --git a/docs/tags/compilers/index.html b/docs/tags/compilers/index.html index 474e511..5948772 100644 --- a/docs/tags/compilers/index.html +++ b/docs/tags/compilers/index.html @@ -1,6 +1,6 @@ - + Compilers | Vineel Kovvuri diff --git a/docs/tags/compilers/index.xml b/docs/tags/compilers/index.xml index dcb1d13..df3cff5 100644 --- a/docs/tags/compilers/index.xml +++ b/docs/tags/compilers/index.xml @@ -2,17 +2,17 @@ Compilers on Vineel Kovvuri - /tags/compilers/ + //localhost:9999/tags/compilers/ Recent content in Compilers on Vineel Kovvuri Hugo -- gohugo.io en-us Fri, 01 Nov 2019 18:33:07 -0700 - + Compiler Internals - /blog/compiler-internals/ + //localhost:9999/blog/compiler-internals/ Fri, 01 Nov 2019 18:33:07 -0700 - /blog/compiler-internals/ + //localhost:9999/blog/compiler-internals/ Basics //a.c int myadd() { int sum = 10; for (int i = 0; i &lt; 100; i++) sum += i; return sum; } int myadd2() { int sum = 10; for (int i = 0; i &lt; 100; i++) sum += i*i; return sum; } int main() { return myadd(); } &gt;cl /c a.c &gt;link /dump /symbols a.obj 008 00000000 SECT3 notype () External | myadd 009 00000050 SECT3 notype () External | myadd2 00A 000000A0 SECT3 notype () External | main The link /dump command dumps the symbols that are part of the obj file. diff --git a/docs/tags/index.html b/docs/tags/index.html index 4df3d1f..db02fcf 100644 --- a/docs/tags/index.html +++ b/docs/tags/index.html @@ -1,6 +1,6 @@ - + Tags | Vineel Kovvuri diff --git a/docs/tags/index.xml b/docs/tags/index.xml index 3019d56..867d9f1 100644 --- a/docs/tags/index.xml +++ b/docs/tags/index.xml @@ -2,38 +2,38 @@ Tags on Vineel Kovvuri - /tags/ + //localhost:9999/tags/ Recent content in Tags on Vineel Kovvuri Hugo -- gohugo.io en-us Fri, 01 Nov 2019 18:33:07 -0700 - + Compilers - /tags/compilers/ + //localhost:9999/tags/compilers/ Fri, 01 Nov 2019 18:33:07 -0700 - /tags/compilers/ + //localhost:9999/tags/compilers/ Asm - /tags/asm/ + //localhost:9999/tags/asm/ Fri, 10 Aug 2018 18:33:07 -0700 - /tags/asm/ + //localhost:9999/tags/asm/ C - /tags/c/ + //localhost:9999/tags/c/ Fri, 10 Aug 2018 18:33:07 -0700 - /tags/c/ + //localhost:9999/tags/c/ Reversing - /tags/reversing/ + //localhost:9999/tags/reversing/ Fri, 10 Aug 2018 18:33:07 -0700 - /tags/reversing/ + //localhost:9999/tags/reversing/ diff --git a/docs/tags/reversing/index.html b/docs/tags/reversing/index.html index 6f09344..17a94fd 100644 --- a/docs/tags/reversing/index.html +++ b/docs/tags/reversing/index.html @@ -1,6 +1,6 @@ - + Reversing | Vineel Kovvuri diff --git a/docs/tags/reversing/index.xml b/docs/tags/reversing/index.xml index bffc989..c500f42 100644 --- a/docs/tags/reversing/index.xml +++ b/docs/tags/reversing/index.xml @@ -2,17 +2,17 @@ Reversing on Vineel Kovvuri - /tags/reversing/ + //localhost:9999/tags/reversing/ Recent content in Reversing on Vineel Kovvuri Hugo -- gohugo.io en-us Fri, 10 Aug 2018 18:33:07 -0700 - + A Newbie's Introduction To Compilation Process And Reverse Engineering - /blog/a-newbies-introduction-to-compilation-process-and-reverse-engineering/ + //localhost:9999/blog/a-newbies-introduction-to-compilation-process-and-reverse-engineering/ Fri, 10 Aug 2018 18:33:07 -0700 - /blog/a-newbies-introduction-to-compilation-process-and-reverse-engineering/ + //localhost:9999/blog/a-newbies-introduction-to-compilation-process-and-reverse-engineering/ Introduction Compilers are surely the complex programs of all times. Even today, writing a compiler with minimum set of tools is considered to be challenging. This tutorial scratches the surface of different compiler phases involved in translating a given source code to executable and also shows how this information is useful in context of reverse engineering. GNU compiler collection provides an excellent set of tools for dissecting the compilation process and to understand the working of bits and bytes in the final executable. diff --git a/docs/vlog/index.html b/docs/vlog/index.html index c4e071d..12a6092 100644 --- a/docs/vlog/index.html +++ b/docs/vlog/index.html @@ -1,6 +1,6 @@ - + Vlog | Vineel Kovvuri diff --git a/docs/vlog/index.xml b/docs/vlog/index.xml index 4698dd8..08f34a9 100644 --- a/docs/vlog/index.xml +++ b/docs/vlog/index.xml @@ -2,10 +2,10 @@ Vlog on Vineel Kovvuri - /vlog/ + //localhost:9999/vlog/ Recent content in Vlog on Vineel Kovvuri Hugo -- gohugo.io en-us - +