https://github.com/kuninoto/42_libasm
Introduction to ASM. Some libc functions implemented in x86_64 ASM with Intel Syntax
https://github.com/kuninoto/42_libasm
1337-libasm 1337school 42-libasm 42-school 42libasm asm assembly assembly-language assembly-x86 libasm libc x86-64
Last synced: 2 months ago
JSON representation
Introduction to ASM. Some libc functions implemented in x86_64 ASM with Intel Syntax
- Host: GitHub
- URL: https://github.com/kuninoto/42_libasm
- Owner: Kuninoto
- License: gpl-3.0
- Created: 2023-09-17T18:49:38.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2025-04-01T23:39:52.000Z (about 1 year ago)
- Last Synced: 2025-04-02T00:27:51.589Z (about 1 year ago)
- Topics: 1337-libasm, 1337school, 42-libasm, 42-school, 42libasm, asm, assembly, assembly-language, assembly-x86, libasm, libc, x86-64
- Language: C
- Homepage:
- Size: 1.31 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# libasm (42Porto - 42Cursus)
## Description
A few string manipulation functions and libc system call wrappers written in x86_64 Assembly with the Intel syntax
### Grade: 100/100
### Installing and running the project
1- Install dependencies
sudo apt install -y nasm
2- Clone this repository
git clone https://github.com/Kuninoto/42_libasm
3- Navigate to `libasm/`, assemble and wipe the artifact files
cd 42_libasm/libasm && make && make clean
4- Compile your program with your new `libasm`
Example (with C): cc -Wall -Wextra -Werror main.c libasm.a
#### Makefile available targets
`make` or `make all` - Makes `libasm.a`
`make clean` - Deletes all the resulting object files
`make fclean` - Deletes `libasm.a` and all the resulting object files
`make re` - Deletes everything (object files and `libasm.a`) and rebuilds `libasm.a`
#### Adding new functions to this library:
- Add their prototypes to `libasm.h`
- Add their source files to `libasm/`
- Add their source file names to the `GENERAL` variable inside the Makefile
- Rebuild the library with `make re`
##### To keep track of what's inside your resulting `libasm.a` run `ar -t libasm.a`
## Useful links
[You Can Learn Assembly in 10 Minutes (it’s easy)](https://www.youtube.com/watch?v=jPDiaZS-2ok)
[How do I know what registers function parameters will be mapped on?](https://stackoverflow.com/questions/28728742/how-do-i-know-what-registers-function-parameters-will-be-mapped-on)
[syscalls(2) man page](https://linux.die.net/man/2/syscalls)
[Linux System Call Table for x86_64](http://blog.rchapman.org/posts/Linux_System_Call_Table_for_x86_64/)
[x64 ASM Cheat Sheet](https://cs.brown.edu/courses/cs033/docs/guides/x64_cheatsheet.pdf)
[NASM tutorial](https://cs.lmu.edu/~ray/notes/nasmtutorial/)
[How does push and pop work in assembly](https://stackoverflow.com/questions/26026174/how-does-push-and-pop-work-in-assembly)
[CPU Registers x86](https://wiki.osdev.org/CPU_Registers_x86)
[Godbolt](https://godbolt.org/)
---
Made by Nuno Carvalho (Kuninoto) | nnuno-ca@student.42porto.com