汇编语言学习

Posted mazhimazhi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编语言学习相关的知识,希望对你有一定的参考价值。

 

参考文章:

(1)x86-64指令系统过程调用学习笔记 https://blog.csdn.net/weixin_44735312/article/details/89818907 

 

创建文本sum.c并编写如下程序:

#include <stdio.h>

int sum(int x,int y)
    int t = x +y;
    return t;
  

通过如下命令生成sum.o文件。

gcc -O2 -c sum.c

通过如下命令查看在x86-64平台上的机器指令:

objdump -d sum.o

最终的机器指令如下:

sum.o:     file format elf64-x86-64


Disassembly of section .text:

0000000000000000 <sum>:
   0:	8d 04 37      lea    (%rdi,%rsi,1),%eax
   3:	c3            retq  

lea传输源操作数偏移(而不是值)到目的寄存器。源操作数必须为内存操作数,目的寄存器必须为同一寄存器。 

 

创建fun.c文件,内容如下:

long caller()
   char a = 1;
   short b = 2;
   int c = 3;
   long d = 4;
   callee(a,&a,b,&b,c,&c,d,&d);
   return a*b + c*d;


void callee(char a,char* ap,short b,short* bp,int c,int* cp,long d,long* dp)
   *ap += a;
   *bp += b;
   *cp += c;
   *dp += d;

生成的机器码如下:

 

技术图片

 

以上是关于汇编语言学习的主要内容,如果未能解决你的问题,请参考以下文章

好好学习GO语言,GO语言基础学习目录★√

:选择学习语言

2018年秋季学期《c语言程序设计》学习总结

C语言学习系列一 C 语言再学习!

二级C语言学习—名师在线免费辅导

Go语言学习——go语言介绍安装运行