A Comprehensive Guide to PGP: Technical Deep Dive

Posted on

Pretty Good Privacy (PGP) is a robust encryption program that ensures privacy and authentication for data communication. Developed by Phil Zimmermann in 1991, it’s widely used for securing emails, files, and directories. This article explores the technical details of PGP, including its algorithms, key management, and detailed processes for encryption, decryption, and signing. Cryptographic Foundations
Read more

Linux Kernel 5.4.102 Release

Posted on

This post summarizes Linux Kernel new features, bugfixes and changes in Linux 5.4.102 Release. Linux 5.4.102 Release contains 338 changes, patches or new features. In total, there are 160,715 lines of Linux source code changed/added in Linux 5.4.102 release compared to Linux 5.4 release. To view the source code of Linux 5.4.102 kernel release online,
Read more

x86-64 instructions for floating-point comparisons

Posted on

What are the x86-64 instructions for floating-point comparisons like the cmpq for quard-word integer comparison? The SSE3 extenstions provide two instructions for comparing floating values: Instruction Based on Description ucomiss S2, S1 S1 – S2 Compare single precision ucomisd S2, S1 S1 – S2 Compare double precision As with cmpq, they follow the GAS convention
Read more

How to package a Scala project to a .jar with sbt?

Posted on

How to package a Scala project to a .jar file with sbt? Manually packaging the .class files are fine but too tedious. A jar of just the project classes The command: sbt package will produces the main artifact as a jar into target/scala-2.x.y/project_name_2.x.y-zz.jar. Continuously building the package: sbt ~package Standalone jar with all dependencies If
Read more

How to get the assembly code for OCaml code generated by ocamlopt?

Posted on

How to get the native assembly code (e.g. x86-64 asm) for OCaml code generated by the native ocamlopt compiler? To get the assembly code for an OCaml program, add these parameters to ocamlopt: -S -inline 20 -nodynlink An example is as follows. The OCaml program: $ cat not.ml let not x = ((x – 1)
Read more

A Beginners’ Guide to x86-64 Instruction Encoding

Posted on

The encoding of x86 and x86-64 instructions is well documented in Intel or AMD’s manuals. However, they are not quite easy for beginners to start with to learn encoding of the x86-64 instructions. In this post, I will give a list of useful manuals for understanding and studying the x86-64 instruction encoding, a brief introduction
Read more

x86-64 ISA / Assembly Programming References

Posted on

This post collect the reference resource for x86-64 (also know as Intel 64, AMD 64) ISA / assembly language programming. x86-64 is a 64-bit extension of the Intel x86 instruction set. ==x86-64 Assembly Programming== Introduction to Computer Systems Resources (15-213 Introduction to Computer Systems Resources from CMU) Lots materials for learning machine-level programming on the
Read more

Inline Assembly with GCC on Linux

Posted on

One cool feature of gcc is that it can inline assembly into C code. With inline assembly, the programmer can precisely control the execution of the processor, such as forcing variables to use registers, getting special processor state efficiently, and writing critical efficient code in assembly by hand. I compile a list of tutorials from
Read more

How to Generate Mixed Source and Assembly List from Source Code using GCC

Posted on

When debugging and optimizing programs, developers sometimes need to generate and investigate into the assembly generated by the compiler. Generating a mixed source and assembly list will help a lot for debugging and optimization. gcc can achieve this by working with the assembler. Generate assembly list mixed with the source code Just add these gcc
Read more