Related Projects > NASMX

Win64 Structure Alignment (Win API)

<< < (6/6)

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