AT&T Assembly for Linux and Mac (sys_write)
Write() in C : (sys_write.c)
#include <stdio.h> int main(void) { printf("Hello Landpack\n"); return 0; }
Write() in AT&T for Linux:(sys_write.s)
.section .data _data: .ascii "Hello Landpack\n" len = .-_data .section .text .globl _start _start: movl $4, %eax #for write movl $_data, %ecx #The address of data movl $len, %edx #The len of string movl $0, %ebx #exit with 0 int $0x80 movl $1, %eax #sys_exit movl $0, %ebx #exit with 0 int $0x80
Write() in AT&T for Mac: (sys_write.s):
.globl _main _main: pushq %rbp #movq %rsp, %rbp leaq _data(%rip),%rdi callq _puts xorl %eax, %eax popq %rbp ret .section _TEXT,_cstring,cstring_literals _data: .ascii "Hello Landpack"
Can we drop this masquerade