Assembly x64 Intro - Nasm Example
来源:互联网 发布:淘宝客户资源管理分析 编辑:程序博客网 时间:2024/05/16 14:55
1. file add.S
.globl my_add
my_add:
pushq %rbp
movq %rsp, %rbp
addq %rsi, %rdi
movq %rdi, %rax
leaveq
retq
2. file max.S
.globl my_max
my_max:
pushq %rbp
movq %rsp, %rbp
movq %rdi, %rax
cmpq %rsi, %rax
cmovlq %rsi, %rax
cmpq %rdx, %rax
cmovlq %rdx, %rax
leaveq
retq
3. file tasm.c
#include <inttypes.h>
#include <stdio.h>
#include <stdlib.h>
int my_add(int x, int y);
int64_t my_max(int64_t, int64_t, int64_t);
int main(int argc, char *argv[])
{
int x = 7, y = 23, z = 11;
int64_t result;
result = my_add(x, y);
printf("add result: %" PRId64 "\n", result);
result = my_max(x, y, z);
printf("max result: %" PRId64 "\n", result);
// printf("add result: %ld\n", result);
return 0;
}
4. Makefile
tasm.x:
gcc -g -c add.S -o add_asm.o
gcc -g -c max.S -o max_asm.o
gcc -g -c tasm.c -o tasm.o -Wall
gcc max_asm.o add_asm.o tasm.o -o tasm.x
5. run
tasm.x
6. result
30
23
- Assembly x64 Intro - Nasm Example
- Assembly x64 Intro - Nasm Syntax
- Assembly x64 Intro - Loop Example
- Assembly x64 Intro - Nasm Fibinachi Numbers Implementation
- Assembly x64 Intro - Align 16 of Nasm
- Assembly x64 Intro - Understand stack frame from example
- Assembly x64 Intro - Arrays
- Assembly x64 Intro - Arith Operate
- Assembly x64 Intro - Register Usage
- Assembly x64 Intro - Shift Operate
- Assembly x64 Intro - Condition Compare
- Assembly x64 Intro - Logic Operate
- Assembly x64 Intro - SSE2 Copy16Times
- Assembly x64 Intro - SSE2 Copy8Times
- Assembly x64 Intro - XMM ABS
- Assembly x64 Intro - SSE2 DCT
- Assembly x64 Intro - SSE2 IDCT
- Assembly x64 Intro - GAS Assembly Issue
- 【CDH5】-001CentOS6.5 下yum安装PostgreSQL
- Android 牛逼哄哄的快速开发框架AndroidOne,秒杀最火的Xutils
- C语言-输入任意长度字符串
- 动态时间规整(DTW)
- MFC Test程序知识点解析
- Assembly x64 Intro - Nasm Example
- URL传递中文参数,Windows正常在后台获取参数,但Linux获取的参数是乱码 的解决方法。
- Java抓取网页数据(原网页+Javascript返回数据)
- Android 资源文件的命名规范问题
- SpringMvc框架Java文件流下载。
- Linux编译动态链接库和使用
- OC-011.OC中的继承
- MapleSim在模型方程的妙用
- C++之数据库处理代理模块