CentOS7写汇编并编译运行汇编代码

1.下载nasm编译器

  下载地址是https://www.nasm.us/pub/nasm/releasebuilds/

wget https://www.nasm.us/pub/nasm/releasebuilds/2.14/nasm-2.14.tar.gz

2.解压安装nasm

tar -xvzf nasm-2.14.tar.gz 

3.进入到nasm的解压目录中编译并安装nasm

cd nasm-2.14         #进入nasm的解压目录

./configure             #配置

make       #编译

make install   #安装
    

4.一段可以输出Hello World的汇编代码

section .data                           ;section declaration
msg     db      "Hello, world!",0xA     ;our dear string
len     equ     $ - msg                 ;length of our dear string
section .text                           ;section declaration
                       ;we must export the entry point to the ELF linker or
   global _start       ;loader. They conventionally recognize _start as their
                       ;entry point. Use ld -e foo to override the default.
_start:
;write our string to stdout
       mov     eax,4   ;system call number (sys_write)
       mov     ebx,1   ;first argument: file handle (stdout)
       mov     ecx,msg ;second argument: pointer to message to write
       mov     edx,len ;third argument: message length
       int     0x80    ;call kernel
;and exit
       mov     eax,1   ;system call number (sys_exit)
       xor     ebx,ebx ;first syscall argument: exit code
       int     0x80    ;call kernel

  将它保存为HelloWorld.s文件。

5.编译该汇编代码

nasm -f elf64 HelloWorld.s -o HelloWorld.o

6.链接生成可执行文件

ld -s HelloWorld.o -o HelloWorld.out

7.执行程序

./HelloWorld.out

8.执行结果如下

[root@CentOs64-7 Assembly]# ./HelloWorld.out
Hello, world!

  转载自:https://blog.csdn.net/weiyuanzhuo/article/details/52382611

原文地址:https://www.cnblogs.com/ToBeExpert/p/10632578.html

时间: 2024-07-30 06:10:18

CentOS7写汇编并编译运行汇编代码的相关文章

在 Xcode 里编译运行 Python 代码

Xcode有着良好的自动补全功能和自动缩进功能,而且Xcode本身也是iOS开发唯一的选择.我们是否可以在这样一个集成环境里,搭建python运行环境呢?答案是可以的,而且很简单,运行的时候也很方便.下面来简单讲解如何在Xcode 5下,搭建python编译环境来编写和运行python程序. 指引 / 跳至 1找到 Python 2Xcode 编译 Python 程序 3Edit Scheme 4Build and Run 找到 Python 每个OS X系统都内置了python,我们可以在[实

Mac OS X系统下编译运行C代码

1.使用编译器将源文件中的代码转换为二进制代码,这个过程叫做编译. 将终端的工作路径切换到源文件所在的路径. cc -c 源文件的名称.例如:cc -c main.c 如果没有意外的话,就会在当前工作路径下生成一个.o文件,这个文件叫做目标文件. 目标文件存储的是.c文件中代码对应的二进制指令. 2.目标文件中仅仅存储的是.c文件中的代码对应的二进制指令. 一个程序如果想要交给CPU执行,光这样是不行的. 还必须为这个目标文件添加一些启动代码.添加启动代码的过程叫做链接. cc 目标文件名称.例

MAC 系统下使用 Sublime Text 2 直接编译运行 java 代码

本文参考了网上很多文章,就不一一列出了. sublime的版本是 sublime test 2 jdk版本 jdk1.7 1. mac下貌似直接就可以运行javac 和 java命令的,如果不能直接运行,自行加入java环境变量即可 2. 安装完sublime text 2之后,进入如下文件夹 $ cd /Users/用户名/Library/Application Support/Sublime Text 2/Packages/Java 3. 备份JavaC.sublime-build文件 $

VS2005混合编译ARM汇编代码-转

原文地址:http://blog.csdn.net/annelcf/article/details/5468093 公司HW team有人希望可以给他们写一个在WinCE上,单独读写DDR的工具,以方便他们量测Memory读写时的硬件信号. 在开发过程中,发现简单的在Storage Memory区域拷贝或粘贴文件不能达到硬件量测的要求,需要直接通过编写ARM汇编指令让CPU直接对Memory进行读写数据. 以 前没有用VS2005编写过汇编代码,所以走了点弯路,一直试图用内嵌汇编的方式来buil

C代码通过编译器编译成可执行文件, 需经历 预处理、编译、汇编、链接 四个阶段

内容借鉴 于yqzheng 一.预处理 1.任务: 进行宏定义展开.头文件展开.条件编译, 不检查语法 2.命令: gcc -E [源文件] -o [预处理文件] gcc -E hello.c -o hello.i 二.编译 1.任务: 将预处理文件 编译成 汇编文件 检查语法 2.命令: gcc -S [源文件] -o [汇编文件] gcc -S hello.c -o hello.s 三.汇编 1.任务: 将汇编文件 生成 目标文件 2.命令: gcc -s [汇编文件] -o [目标文件]

gcc/g++等编译器 编译原理: 预处理,编译,汇编,链接各步骤详解

摘自http://blog.csdn.net/elfprincexu/article/details/45043971 gcc/g++等编译器 编译原理: 预处理,编译,汇编,链接各步骤详解 C和C++编译器是集成的,编译一般分为四个步骤: 预处理(preprocessing)  ----------------- cpp/ gcc -E  编译(compilation) ------------------ cc1 / gcc -S 汇编(assembly)  ----------------

hello world的本质-----预编译,编译,汇编,链接

今天开始会开始讲述linux下程序的本质.这关系着一个程序员内功的修养以及后续读android源代码的基础. 大家都知道一个程序从编写完成到最后运行成功.要经历4个步骤,一共是预处理,编译,汇编,和链接. 首先我们编写一个最简单的hello world 程序. 1 #include<stdio.h> 2 int main() 3 { 4 printf("hello world!\n"); 5 return 0; 6 7 } 然后 在命令行输入命令 gcc -E hello.

gcc编译的四个阶段:预处理,编译,汇编,链接

1:gcc编译的四个阶段:预处理,编译,汇编,链接 #vi file.c #gcc -E file.c -o file.i//-E查看且预处理后停止编译,-o生成目标文件,-i表示已预处理 #gcc -S file.i -o file.s//-S编译到汇编而不进行汇编和链接 #gcc -c file.s -o file.o//-c编译到目标代码 #gcc file.o -o file//-o 文件输出到文件 # gcc -static file.c -o file//-static禁止使用动态库

汇编知识扫盲之16位汇编跟32位汇编的保护模式以及汇编代码编写

汇编知识扫盲之16位汇编跟32位汇编的保护模式以及汇编代码编写 一丶内存寻址模型 逻辑地址.线程地址.物理地址 了解汇编之前.先了解一下上面这些词的含义; 逻辑地址: 这个是邮编一起生成的.逻辑地址一般都是 段加段内偏移组成的.每个进程独享. 线性地址: 由分段管理机制.将逻辑地址转化为线性地址.这个了解即可.学过内核的人看到应该明白.如果没有学过.简单滤过即可(32位下逻辑 = 线性) 物理地址: 通过分页管理机制(内核中成为PDE PTE等页目录 页表等等)将线性地址转化为物理地址. 这些了