Related Projects > NASMX
Win64 Structure Alignment (Win API)
encryptor256:
--- Quote from: Rob Neff on January 27, 2014, 02:00:19 AM ---More progress! Added pragma pack!
--- End quote ---
Okay, i will check this out.
I have never, ever used "packing" practically. :D
--- Quote from: Bryant Keller on January 27, 2014, 03:25:09 AM ---If you have a copy of the GNU C/C++ compiler, you _can_ have C/C++ comments in your NASM code. Here is an example
--- End quote ---
Thanks for example, this is something new, didn't knew that it's, even possible, here is win64 example:
--- Code: ---/**
* Filename: demo.asm
* Developer: S. Bryant Keller <bkeller@about.me>
* Created: 26 Jan 2014 10:25 PM
* Reason: To show encryptor256 how to use C/C++ comments in
* NASM source.
* Build: cpp demo.asm -o demo.temp
* nasm -f elf demo.temp -o demo.o
* gcc demo.o -o demo
*/
/*
* Original demo was modified to fit 64 bits.
* Filename: (unchanged)
* Translator: J.K. Encryptor256
* Translated: 27 Jan 2014 12:09 PM
* Reason: To say thanks and provide with Win64 example,
* because didn't managed to run or compile 32 bit version correctly on Win64.
* Build: cpp de... (unchanged)
* nasm -f win64 demo.temp -o demo.o
* gcc de... (unchanged)
*/
BITS 64
GLOBAL main
EXTERN printf
SECTION .text
align 16
main:
; Save all default arguments
mov [rsp+8*1],rcx
mov [rsp+8*2],rdx
mov [rsp+8*3],r8
mov [rsp+8*4],r9
; Define something
%define main.argc (rbp+8*2)
%define main.argv (rbp+8*3)
; Create stack
push rbp
mov rbp,rsp
lea rsp,[rsp-8*4]
; Print
; - assign RDX -> [[main.argv]] : Program name
; - assign R8 -> [[main.argv+8]] : First argument
mov rax,[main.argv]
mov r8,[rax+8]
mov rdx,[rax]
mov rcx,txt_format_arguments
call printf
; Clear stack n quit
lea rsp,[rsp+8*4]
pop rbp
ret
SECTION .data
txt_format_arguments: db "This program name is '%s' and is called by '%s'!",0
--- End code ---
So, when i run, using command line: "demo.exe Computer", it gives\prints result:
--- Code: ---This program name is 'demo.exe' and is called by 'Computer'!
--- End code ---
Navigation
[0] Message Index
[*] Previous page
Go to full version