How does GNU GRUB work


This blog post is closely related with my interest in low-level stuff. As you already may know, I've started to be interested in such things like: How N works, where the N is something like - what does occur when we turn on the computer, pressing key on keyboard, how ...

Read more

Say hello to x86_64 Assembly [part 8]


It is eight and final part of Say hello to x86_64 Assembly and here we will take a look on how to work with non-integer numbers in assembler. There are a couple of ways how to work with floating point data:

  • fpu
  • sse

First of all let's look how ...

Read more

Say hello to x86_64 Assembly [part 7]


It is seventh part of Say hello to x86_64 Assembly and here we will look on how we can use C together with assembler.

Actually we have 3 ways to use it together:

  • Call assembly routines from C code
  • Call c routines from assembly code
  • Use inline assembly in C ...
Read more

Say hello to x86_64 Assembly [part 6]


It is sixth part of Say hello to x86_64 Assembly and here we will look on AT&T assembler syntax. Previously we used nasm assembler in all parts, but there are some another assemblers with different syntax, fasm, yasm and others. As i wrote above we will look on gas ...

Read more

Say hello to x86_64 Assembly [part 5]


It is a fifth part of Say hello to x86_64 Assembly and here we will look at macros. It will not be blog post about x86_64, mainly it will be about nasm assembler and it's preprocessor. If you're interesting in it read next.

Macros

NASM supports two form ...

Read more

Say hello to x86_64 Assembly [part 4]


Some time ago i started to write series of blog posts about assembly programming for x86_64. You can find it by asm tag. Unfortunately i was busy last time and there were not new post, so today I continue to write posts about assembly, and will try to do it ...

Read more

Say hello to x86_64 Assembly [part 3]


The stack is special region in memory, which operates on the principle lifo (Last Input, First Output).

We have 16 general-purpose registers for temporary data storage. They are RAX, RBX, RCX, RDX, RDI, RSI, RBP, RSP and R8-R15. It's too few for serious applications. So we can store data ...

Read more

Say hello to x86_64 Assembly [part 2]


Some days ago I wrote the first blog post - introduction to x64 assembly - Say hello to x64 Assembly [part 1] which to my surprise caused great interest:

newscombinator reddit

It motivates me even more to describe my way of learning. During this days I got many feedback from different people. There were ...

Read more

Say hello to x86_64 Assembly [part 1]


Introduction

There are many developers between us. We write a tons of code every day. Sometime, it is even not a bad code :) Every of us can easily write the simplest code like this:

#include <stdio.h>

int main() {
  int x = 10;
  int y = 100;
  printf("x + y = %d", x ...
Read more

Using Elixir to write Ybot plugins


Ybot - is a customizable bot which was inspired by GitHub's Hubot and written with Erlang programming language. You can create pligin for Ybot in one of following languages:

  • Python
  • Ruby
  • Shell
  • Perl
  • Erlang/OTP
  • Elixir
  • Scala

In this post i will tell you to create Ybot plugin with Elixir ...

Read more