文档章节

hello world

guonaihong
 guonaihong
发布于 2015/06/30 22:21
字数 319
阅读 159
收藏 6


来个汇编版的hello world

.section .data
hello:
    .ascii "hello world\n"
    hello_len = . - hello

.section .text

.global _start

_start:

    movl $4, %eax                #write
    movl $1, %ebx                #write(1, )
    movl $hello, %ecx            #write(1, hello, )
    movl $hello_len, %edx        #write(1, hello, hello_len)

    int $0x80

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

如何编译

gcc -c my_write.s && ld my_write.o && ./a.out


在汇编语言中,任何一小数点(.)开始的指令都不会被直接翻译成机器指令,这些针对汇编程序本身的指令,实际上并不会由计算机运行。

.section .data命令是数据段的开始,数据段中要列出程序数据所需的所有内存空间。

.section .text命令是文本段的开始,文本段是存放程序指令的部分。

_start 是一个符号,这说明它将在汇编或链接过程中被其他内容替换。符号一般用来标记程序或数据的位置。 .global表示汇编程序不应该在汇编之后废弃此符号,因为链接器需要它。_start 是个特殊符号,总是用.global来标记,因为它标记了该程序的开始位置。

_start:

定义_start的值。

movl $4, %eax

4是write 的系统编号

同等的c语言实现:

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

#define HELLO "hello world\n"

int main() {
    write(1, HELLO, sizeof(HELLO) - 1); 
    exit(0);
}


© 著作权归作者所有

guonaihong

guonaihong

粉丝 6
博文 83
码字总数 27591
作品 1
徐汇
程序员
私信 提问
各种语言的Hello World程序 選擇學習的

選擇學習語言的參考 1. Ada with Ada.Text_IO; procedure Hello is begin Ada.TextIO.PutLine("Hello World!"); end Hello; 2. ALGOL68 'begin' print("Hello World!") 'end' 3. AmigaE PROC......

電泡泡
2012/12/18
344
8
介绍一个基于 Java 的并发编程语言 —— JR

JR 是一种专为解决并行编程问题的编程语言。JR 是在 Java 语言的基础上增加了并行编程(例如进程和信号量等)概念的一个新的语言。 JR 经常在学校中用来教授并行编程课程。 在本文中我们主要...

红薯
2010/06/28
1.4K
3
iOS开发之UIlabel多行文字自动换行 (自动折行)

UIView footerView = [[UIView alloc]initWithFrame:CGRectMake(10, 100, 300, 180)]; UILabel label = [[UILabel alloc]initWithFrame:CGRectMake(10, 100, 300, 150)]; label.text = @"Hel......

Daniel_s
2015/12/18
854
0
Python 中字符串拼接的 N 种方法

原文出处:oschina. python拼接字符串一般有以下几种方法: ①直接通过(+)操作符拼接 s = 'Hello'+' '+'World'+'!'print(s) 输出结果:Hello World! 使用这种方式进行字符串连接的操作效率......

oschina.
2018/09/03
0
0
python异步编程之asyncio(百万并发)

一、asyncio下面通过举例来对比同步代码和异步代码编写方面的差异,其次看下两者性能上的差距,我们使用sleep(1)模拟耗时1秒的io操作。 同步代码: import time def hello(): 输出:(间隔差...

p柯西
2018/06/12
109
1

没有更多内容

加载失败,请刷新页面

加载更多

Kettle自定义jar包供javascript使用

我们都知道 Kettle 是用 Java 语言开发,并且可以在 JavaScript 里面直接调用 java 类方法。所以有些时候,我们可以自定义一些方法,来供 JavaScript 使用。 本篇文章有参考自:https://www...

CREATE_17
昨天
82
0
处理CSV文件中的逗号

我正在寻找有关如何处理正在创建的csv文件的建议,然后由我们的客户上传,并且该值可能带有逗号(例如公司名称)。 我们正在研究的一些想法是:带引号的标识符(值“,”值“,”等)或使用|...

javail
昨天
79
0
如何克隆一个Date对象?

将Date变量分配给另一个变量会将引用复制到同一实例。 这意味着更改一个将更改另一个。 如何实际克隆或复制Date实例? #1楼 简化版: Date.prototype.clone = function () { return new ...

技术盛宴
昨天
73
0
计算一个数的数位之和

计算一个数的数位之和 例如:128 :1+2+8 = 11 public int numSum(int num) { int sum = 0; do { sum += num % 10; } while ((num = num / 10) > 0); return sum;......

SongAlone
昨天
124
0
为什么图片反复压缩后普遍会变绿,而不是其他颜色?

作者:Lion Yang 链接:https://www.zhihu.com/question/29355920/answer/119088684 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 业余版概要:安卓的...

shzwork
昨天
71
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部