`
cutecoot
  • 浏览: 119870 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

inline assembly

 
阅读更多
写道
#include <stdio.h>
#include <stdlib.h>
#define N 10

void Arraysum(int len, int *A, int *B, int *C)
{
// int k = len;
// do
// {
// k--;
// C[k] = A[k] + B[k];
// } while (k > 0);
__asm__(//".text"
//".globl main"

"main:"
"##########################################################"
"# Note: pseudo-instruction la becomes lui followed by ori"
"la $t0, length # t0 = address of word before array[0], length"
"lw $t2, 0($t0) # t2 = length"
"sll $t2, $t2, 2 # multiply length by 4 to make t2 = length in bytes"
"add $t1, $t2, $t0 # t1 is initial value for k, address of A[k-1], since base is at t0 + 4"
"j test # jump to test at end of loop"

"loop: lw $t3, 0($t1) # t2 = A[k]"
"add $t4, $t1, $t2 # t4 = address of B[k]"
"lw $t5, 0($t4) # t5 = B[k]"
"add $t5, $t5, $t3 # t5 = A[k] + B[k]"
"add $t4, $t4, $t2 # t4 = address of C[k]"
"sw $t5, 0($t4) # C[k] = A[k] + B[k]"
"addi $t1, $t1, -4 # k--"
"test:"
"bne $t1, $t0, loop # loop test"

"################################################################"
"li $v0, 17 # set codes for end syscall"
"li $a0, 0");
// "syscall # end program");
}

main()
{
int Array1[N];
int Array2[N];
int output[N];

// Init input data
for (int i = 0; i < N; i++) {
Array1[i] = rand()%10;
Array2[i] = rand()%10;
}

Arraysum(N, Array1, Array2, output);

printf("Array1: \n");
for (int i = 0; i < N; i++) {
printf("%d ", Array1[i]);
printf(" ");
}

printf("\nArray2: \n");
for (int i = 0; i < N; i++) {
printf("%d ", Array2[i]);
printf(" ");
}

printf("\nOutput: \n");
for (int i = 0; i < N; i++) {
printf("%d ", output[i]);
printf(" ");
}
}

 

分享到:
评论

相关推荐

    Brennan's Guide to Inline Assembly

    《Brennan's Guide to Inline Assembly》是一本深入探讨内联汇编的指南,主要针对的是AT&T汇编和Intel汇编的区别。汇编语言是计算机科学中的底层编程语言,它与机器语言直接对应,程序员通过汇编语言可以直接对硬件...

    inline assembly code

    ### Inline Assembly Code详解 #### 一、概述 在现代编程领域,高级语言如C和C++因其跨平台性以及高效性而被广泛采用。然而,在某些特定场景下,程序员仍需借助汇编语言来实现更底层的操作或优化性能。GNU ...

    Inline Assembly in GCC Vs VC++.

    ### 内联汇编在GCC与VC++中的差异 #### 引言 内联汇编是一种混合编程技术,允许程序员在高级语言代码中嵌入汇编指令,从而达到优化性能或实现某些特定功能的目的。本文将详细介绍GCC和VC++两种编译器在处理内联...

    gcc-inline-assembly

    `GCC-Inline-Assembly-HOWTO.html`文件应该包含了关于GCC内嵌汇编的更深入、详细的教程,包括各种架构下的实例、复杂的约束语法、如何处理浮点数等。通过阅读这份文档,你可以更全面地了解如何在实际项目中有效利用...

    Guide to Inline Assembly.

    在这个示例中,我们定义了一个函数`inline_asm_example`,其中包含一条内联汇编指令。该指令使用了AT&T语法: - `"movl %1, %%ebx"`:这条指令的作用是将第二个参数(在这里是指`eax_value`)的值移动到`ebx`寄存器...

    gcc-inline-assembly参考资料

    This HOWTO explains the use and usage of the inline assembly feature provided by GCC. There are only two prerequisites for reading this article, and that’s obviously a basic knowledge of x86 assembly...

    嵌入式汇编资料

    包括两个文件,一个GCC Inline Assembly HOWTO,一个IBM的文档Inline assembly for x86 in Linux Putting the pieces together

    GCC内联汇编入门(中文版)

    GCC内联汇编入门 GCC内联汇编是GCC编译器提供的一种功能强大的特性,它允许开发者在C语言中嵌入汇编代码,从而提高...GCC-Inline-Assembly-HOWTO:http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html

    Professional Assembly Language

    Chapter 13, “Using Inline Assembly,” shows how to incorporate assembly language routines directly in your C or C++ language programs. Inline assembly language is often used for “hard-coding” quick...

    Optimizing subroutines in assembly language

    C++中可以使用内联汇编(inline assembly)和内置函数(intrinsic functions)来直接插入汇编代码,从而进行更精细的性能调优。内联汇编允许将汇编语言代码直接嵌入到C++代码中,而内置函数则是提供了一种方式,让...

    GCC-Inline-Assembly-HOWTO

    GCC内联汇编 HOWTO 是一本关于如何在GCC(GNU Compiler Collection)中编写内联汇编代码的手册。本书由Sandeep.S撰写,其最初的版本发布于2003年3月1日。在阅读这篇文章之前,读者需要具备两个前提条件:基础的x86...

    C语言与汇编语言混合编程

    本实验主要介绍了 ARM 嵌入式 C 语言编程的基本方法、嵌入式汇编(Inline Assembly)编程规则和方法,以及汇编语言程序和 C 语言程序之间的相互调用规则和编程方法。 一、ARM 嵌入式 C 语言编程基本方法 ARM ...

    GCC内嵌汇编.pdf

    basic inline assembly 是一种基本的内嵌汇编形式,用于在 C 语言中嵌入汇编程序。其格式如下: ``` asm("assembly code"); ``` 这是一种简单的内嵌汇编形式,用于执行一些简单的汇编指令。 3. extended assembly ...

    arm gcc inline assembler cookbook

    GCC (GNU Compiler Collection) 的 ARM 编译器提供了一项强大的功能:内联汇编(inline assembly),它允许开发者在 C 或 C++ 源代码中直接嵌入 ARM 汇编指令。这一特性对于性能敏感的应用程序非常有用。 #### 二、...

    汇编语言程序设计A卷.doc

    汇编语言可以与 C 和 C++语言混合编程,两种混合编程方法是inline assembly和 external assembly,前者是将汇编语言代码嵌入到C或C++语言中,后者是将汇编语言代码编译成独立的对象文件,然后与 C 或 C++语言代码...

    DSP入门知识PPT

    * inline assembly:使用inline汇编语言编程,嵌入到高级语言中。 * CCS(Code Composer Studio):使用TI公司的CCS集成开发环境,提供了DSP编程所需的所有工具和资源。 DSP的调试 DSP的调试可以使用仿真器、逻辑...

    GCC内联汇编入门[参照].pdf

    5. 基本内联汇编(basic inline assembly):指C语言中内联汇编程序的一种形式,和extended asm对应。 6. 扩展内联汇编(extended assembly):和基本内联汇编对应,比它多了一些特性,如可以指明输入、输出等。 ...

    Heilx AAC Decoder optimized for ARM

    Simply add a new block to the file real/assembly.h which implements the required inline assembly functions for your processor. Something like &lt;br&gt;... #elif defined NEW_PROCESSOR &lt;br&gt;/* ...

    vc_masm.rar_VC .masm_VC 汇编_VC使用汇编_masm_mfc汇编调用

    1. **内联汇编(Inline Assembly)**:在C++源代码中直接嵌入汇编代码,通过`__asm`关键字实现。这种方式简单且直接,但可能会影响代码的可读性和移植性。例如: ```cpp void inline_asm_example() { __asm { ...

    C语言与汇编语言混合编程_32位嵌入式.pdf

    其中,嵌入式汇编(Inline Assembly)允许在C代码中插入汇编指令,实现对硬件的精确控制。同时,理解汇编语言程序和C语言程序之间的调用规则至关重要,这涉及到函数调用的参数传递、返回值处理以及堆栈管理等细节。 ...

Global site tag (gtag.js) - Google Analytics