文档章节

汇编实现square函数

guonaihong
 guonaihong
发布于 2015/08/10 08:41
字数 130
阅读 208
收藏 2

square函数主要计算一个数的平方

这个函数主要用到乘法指令imull

code:

.section .data
.section .text

.global _start
fmt:
    .ascii "%d\n\0"

_start:
    pushq $2
    call square
    addq $8, %rsp               #复位%rsp

    movl %eax, %esi    
    movq $fmt, %rdi    
    xorl %eax, %eax    
    call printf            #调用printf

    movl $0, %edi
    call exit              #调用exit

.type square, @function
square:
    pushq %rbp
    movq %rsp, %rbp
    
    movl 16(%rbp), %eax
    imull %eax, %eax

    movq %rbp, %rsp
    popq %rbp
    ret

编译命令:

gcc -c square.s -g && ld ./square.o -lc -dynamic-linker /lib64/ld-linux-x86-64.so.2 && ./a.out


  TODO

  解释movl 16(%rbp), %eax指令的意思。 

© 著作权归作者所有

guonaihong

guonaihong

粉丝 6
博文 83
码字总数 27591
作品 1
徐汇
程序员
私信 提问
强制内联和强制不内联

1.强制不内联 一个函数,如果代码量比较少的话,用 -O3优化开关的话,gcc有可能将这个函数强制内联(inline)即使,你在函数前没有写inline助记符。 如果是一个手写汇编的函数,那样的话很有可...

长平狐
2012/09/03
255
0
深入分析golang多值返回以及闭包的实现

一、前言 golang有很多新颖的特性,不知道大家的使用的时候,有没想过,这些特性是如何实现的?当然你可能会说,不了解这些特性好像也不影响自己使用golang,你说的也有道理,但是,多了解底...

万建宁
2018/07/17
50
0
C++11新特性中的匿名函数Lambda表达式的汇编实现分析(三)

C++11新特性中的匿名函数Lambda表达式的汇编实现分析(一) C++11新特性中的匿名函数Lambda表达式的汇编实现分析(二) Lambda表达式中较复杂的形式如下: [ capture ] ( params ) -> ret { ...

Micooz
2014/06/10
6.4K
15
.c文件和.h文件的关系

举个简单的例子!你会容易理解的。 你写一个stack.h的头文件,里面声明几个函数原形: stack.h #ifndef STACKH #define STACKH extern void push(char); extern char pop(void); extern int ...

园客
2018/01/23
69
0
纯 C# 实现 Hook 功能

原文出处:zhao.yj 发布一个自己写的用于Hook .Net方法的类库,代码量不大,完全的C#代码实现,是一个比较有趣的功能,分享出来希望能和大家共同探讨 安装:Install-Package DotNetDetour 源...

zhao.yj
2016/06/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Numpy处理图片方法

在进行图像领域的深度学习的时候经常需要对图片进行处理,包括图像的翻转,压缩,截取等,一般都是用Numpy来处理。处理起来也很方便。 In[3] # 导入需要的包 import numpy as np import matp...

北方的郎
14分钟前
7
0
AMD集中擢升高管:从Intel挖了个高手

  1 月 17 日,AMD 官方宣布多项人事升迁、新人任命,擢升了四位高级副总裁:   AMD 同时还宣布, 聘请行业资深人士 Daniel McNamara 出任高级副总裁兼服务器业务部总经理,负责在第二代...

水果黄瓜
18分钟前
6
0
什么是泛型?

一、泛型的概念 泛型是 Java SE5 出现的新特性,泛型的本质是类型参数化或参数化类型,在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型。 二、泛型的意义 一般的...

hncboy
53分钟前
7
0
dynamic-connectivity 动态连通性问题之 quick-union 算法

quick-union 的思想是:若对象 p 的 root_id 和对象 q 的 root_id 相等,则认为 p 和 q 连通。 若要将对象 p 和对象 q 连通(已知两对象未连通),则将 p 的 root_id 的值设为 q 的 root_id ...

Phpythoner_Alei
今天
51
0
OSChina 周六乱弹 —— 实在选不出来就唱国歌

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @花间小酌 :#今日歌曲推荐# 分享阿冗的单曲《你的答案》。--祝大家在2020年都找到自己答案。 《你的答案》- 阿冗 手机党少年们想听歌,请使劲...

小小编辑
今天
226
6

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部