AT&T ASSEMBLY FOR LINUX AND MAC (SYS_FORK)

Fork() in C: (sys_fork.c)

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(void)
{
    fork();
    printf("Hello Landpack\n");
    return 0;
}

Fork() in AT&T for Linux:(sys_fork.s)

.section .rodata
msg:    .ascii "Hello Landpack\n"
    len = .-msg

.section .bass

.section .text
.globl _start
_start:
    movl    $2,%eax     # sys_fork number (2)
    int     $0x80

# As we know,if we fork() in C
# we will run the double process
# They almost have the same code and data

    movl    $4,%eax     # sys_write number (4)
    movl    $1,%ebx     # STDOUT_FILENO == (1)
    movl    $msg,%ecx   # The head address of msg
    movl    $len,%edx   # The offset of addr
    int     $0x80

    movl    $1,%eax
    movl    $0,%ebx
    int     $0x80

时间: 2024-07-31 20:56:18

AT&T ASSEMBLY FOR LINUX AND MAC (SYS_FORK)的相关文章

AT&amp;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 .gl

AT&amp;T Assembly for Linux and Mac (sys_exit)

Exit() in C : (sys_exit.c) int main(void) { return 99; } Exit() in AT&T for Linux: (sys_exit.s) .section .data .section .text .globl _start _start: movl $1, %eax #sys_call number movl $99, %ebx #_return value int $0x80 #intrrupt number Exit() in AT&am

Linux C中内联汇编的语法格式及使用方法(Inline Assembly in Linux C)

在阅读Linux内核源码或对代码做性能优化时,经常会有在C语言中嵌入一段汇编代码的需求,这种嵌入汇编在CS术语上叫做inline assembly.本文的笔记试图说明Inline Assembly的基本语法规则和用法(建议英文阅读能力较强的同学直接阅读本文参考资料中推荐的技术文章 ^_^). 注意:由于gcc采用AT&T风格的汇编语法(与Intel Syntax相对应,二者的区别参见这里),因此,本文涉及到的汇编代码均以AT&T Syntax为准. 1. 基本语法规则 内联汇编(或称嵌入汇

Java 反编译工具 —— JAD 的下载地址(Windows版/Linux版/Mac OS 版)

Java 反编译工具 —— JAD 的下载地址. 各种版本哦! Windows版,Linux版,Mac OS 版,等等 下载地址: http://varaneckas.com/jad/ Java 反编译工具 -- JAD 的下载地址(Windows版/Linux版/Mac OS 版),布布扣,bubuko.com

Linux或者Mac系统使用SSH连接树莓派

你可以在一台Linux或者Mac计算机(或者另一个树莓派)的终端上使用SSH连接你的树莓派,并且不需要其它软件. 你需要知道你的树莓派IP地址以便连接上它.查询IP,可以在树莓派的终端上输入命令"hostname -I".另外,如果你运行的树莓派没有显示器,你可以查看你的路由器上的设备列表或者使用像nmap这样的工具. 在计算机的终端上复制黏贴以下命令,但是要把其中的<IP>替换你的树莓派IP.终端上要使用Ctrl + Shift + V进行黏贴. ssh [email p

Node.js【2】开发环境搭建(Windows、Linux&amp;amp;Mac)

安装方式有非常多种,以下仅仅是我喜欢的一种方式,安装的路径不一定要跟我一样. 眼下最新的版本号是v0.10.28 Windows 1.下载(放到E:\node\nodejs): http://nodejs.org/dist/latest/x64/node.exe http://nodejs.org/dist/npm/npm-1.4.9.zip 2.解压(到当前文件夹):npm-1.4.9.zip 3.环境变量: Path里面添加?:E:\node\nodejs 4.改动npm配置: C:\Use

[Linux]在Mac下配置Linux服务器并安装Nginx+PHP

Linux 安装Debian系统 我安装的是Debian7.5的系统,Debian的软件包管理和升级十分方便,而且系统也很稳定.安装盘可以去华中科技大学镜像.网易开源镜像站或者中国科技大学镜像下载,和官网一样,一般下载的时候会提供DVD-1.DVD-2和DVD-3的下载,后面二者均是一些不太流行的软件,只需要下载安装DVD-1即可. 修改sources.list 装好系统之后的第一件事情就是修改Debian的源,因为默认的配置会访问镜像介质,修改源可以直接联网通过apt-get获取并安装软件包,

Linux/Unix mac 命令笔记

bg和fg Linux/Unix 区别于微软平台最大的优点就是真正的多用户,多任务.因此在任务管理上也有别具特色的管理思想.我们知道,在 Windows 上面,我们要么让一个程序作为服务在后台一直运行,要么停止这个服务.而不能让程序在前台后台之间切换.而 Linux 提供了 fg 和 bg 命令,让你轻松调度正在运行的任务. 假设你发现前台运行的一个程序需要很长的时间,但是需要干其他的事情,你就可以用 Ctrl-Z ,挂起这个程序,然后可以看到系统提示:[1]+ Stopped /root/bi

linux和mac安装bundler

gem install bundleror sudo gem install bundler linux和mac安装bundler