Giter Club home page Giter Club logo

asm's Introduction

Assembly programming

CC BY-NC-SA 4.0 Check Links star this repo fork this repo contributions welcome PRs Welcome

This repository contains blog posts that introduce the assembly programming language. For this moment, all the content and examples cover only the x86_64 processors and the GNU Linux operating system. In the future, I plan to post learning materials for the ARM64 architecture.

Whether you are an experienced programmer or not, these posts are intended for everyone to learn the assembly programming language. The posts cover the following topics:

  • Basic description of the x86_64 processor architecture
  • How to write, build, and run a simple program written in the assembly programming language
  • The main parts of which a program for Linux consists
  • Basics of memory allocation, what is stack and heap
  • What is a system call and how does your program interact with an operating system
  • How floating point numbers are represented in a computer memory
  • How to call assembly code from a C program
  • And many more...

Have fun!

Magic

Here are links to each post:

Requirements

To run code examples, you need the following tools:

Translations

Thanks to the volunteers, the posts about assembly programming are translated into different languages.

Note

The translations may diverge from the original content.

Chinese translation

Turkish translation

Contribution

Read the Contribution guide to learn how to contribute to the project. When contributing, make sure to follow the Code of Conduct.

License

Each Markdown file in the repository is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

CC BY-NC-SA 4.0

Author

The technical content is written by @0xAX.

Additional big thanks to @klaudiagrz for text improvements.

asm's People

Contributors

0xax avatar e12e avatar furkanonder avatar jrmccoy avatar klaudiagrz avatar knoxknox avatar lushl9301 avatar tirkarthi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

asm's Issues

translations: request to add links in README

Hey:
Long long age, I found your articles and thinks its good, so I translates these series to Chinese.
译文: Say hello to x64 Assembly [part 1]
译文: Say hello to x64 Assembly [part 2]
译文: Say hello to x64 Assembly [part 3]
译文: Say hello to x64 Assembly [part 4]
译文: Say hello to x64 Assembly [part 5]
译文: Say hello to x64 Assembly [part 6]
译文: Say hello to x64 Assembly [part 7]
译文: Say hello to x64 Assembly [part 8]

Could you add those translation to your README ? :-) Just add the following code:

[译文: Say hello to x64 Assembly [part 1]](https://vvl.me/2016/08/translation-Say-hello-to-x64-Assembly-part-1/)
[译文: Say hello to x64 Assembly [part 2]](https://vvl.me/2016/08/translation-Say-hello-to-x64-Assembly-part-2/)
[译文: Say hello to x64 Assembly [part 3]](https://vvl.me/2016/08/translation-Say-hello-to-x64-Assembly-part-3/)
[译文: Say hello to x64 Assembly [part 4]](https://vvl.me/2016/08/translation-Say-hello-to-x64-Assembly-part-4/)
[译文: Say hello to x64 Assembly [part 5]](https://vvl.me/2016/08/translation-Say-hello-to-x64-Assembly-part-5/)
[译文: Say hello to x64 Assembly [part 6]](https://vvl.me/2016/08/translation-Say-hello-to-x64-Assembly-part-6/)
[译文: Say hello to x64 Assembly [part 7]](https://vvl.me/2016/08/translation-Say-hello-to-x64-Assembly-part-7/)
[译文: Say hello to x64 Assembly [part 8]](https://vvl.me/2016/08/translation-Say-hello-to-x64-Assembly-part-8/)

Ask about part 3 of say-hello-to-x64-assembly

Hi,

My name is Oka. I very very beginner in assembly programming. I learn assembly through your articles at your website.

I have some questions for part 3 http://0xax.blogspot.co.id/2014/09/say-hello-to-x64-assembly-part-3.html

1st question

;; get argv[1]
pop rsi

;; convert argv[1] str to int
call  str_to_int

We are popping up argv[1] from the stack. But why at str_to_int function you XOR'ing value at rax register ? How value at rsi register get copied to rax register ? . In my very beginner understanding, when we do pop rsi , the value from stack will copied to rsi register. From my beginner view, value at rsi will become parameter passed to str_to_int, but it looks value at rsi register not touched.

2nd question
When next function called ?

3rd Question
Why executing ret instruction must be wrapped in a function return_str ? Why not just type ret

Thank You :)

Introduce titles for each part

For this moment each part is named like Say hello to x86_64 Assembly part N. It is maybe worth to consider unique titles for each part that will reflect the topic of the part.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.