**PNC the 3**
Alright, so PNC3!! So guys the goal is to create a **primereg** in assembly. It should be possible with our current knowledge in assembly. If you would like, and just primereg isn't enough for you by all means go further and do things such as:
* **primeregb**
* **primeregs**
* **primeregbs**
* **primerega**
* **primeregba**
* **primeregboa**
good luck guys! Have fun! \\
** compiling **
nasm -f elf64 -o pnc3.o pnc3.asm
ld -o pnc3 pnc3.o
** gdb commands **
* show registers
* info registers (shows info on register)
* this can be shortened as an example to: i r eax
* set disassembly-flavor intel (sets assembly flavor up to intel)
* break _start: (start of program, go step by step from here)
* layout asm
* ni - next instruction
* si - step instruction
example of displaying registers: \\
break _start \\Breakpoint 1, 0x0000000000400080 in _start ()
(gdb) display/x $rax
1: /x $rax = 0x0
(gdb) display/x $rbx
2: /x $rbx = 0x0
(gdb) display/x $rcx
3: /x $rcx = 0x0
(gdb) display/x $rip
4: /x $rip = 0x400080
(gdb)
si
Helpful sources:
Register usage: {{:notes:comporg:projects:reg.png?400|}}
Take note of registers r12-r15
http://blog.rchapman.org/posts/Linux_System_Call_Table_for_x86_64/ \\
https://cs.brown.edu/courses/cs033/docs/guides/x64_cheatsheet.pdf \\
https://www.cs.uaf.edu/2017/fall/cs301/reference/x86_64.html \\
http://www.egr.unlv.edu/~ed/assembly64.pdf \\
http://www.felixcloutier.com/x86/ (large list of assembly instructions) \\
**kupala nasm tutorial!! great tutorial!!** https://www.youtube.com/watch?v=VQAKkuLL31g&list=PLetF-YjXm-sCH6FrTz4AQhfH6INDQvQSn