如何在装配中遍历矩阵?

时间:2015-11-27 03:31:38

标签: c linux assembly matrix x86

我在C中做了一个带有随机数的矩阵3x3,现在我想在程序集中调用函数count_pairs_matrix(int ** m,int y,int k)来验证这个矩阵的对。

y - >是行数

k - >是列数

我这样做:

movl 8(%ebp), %eax  #pointer m
movl 12(%ebp), %ebx #k
movl 16(%ebp), %ecx #y
movl $0, %esi

(..)
movl (%eax,%esi,4), %edx  <-- the problem is here, the register edx have the address but not the number of that position of the matrix

1 个答案:

答案 0 :(得分:0)

首先,这是气体语法,而不是nasm语法。

其次,矩阵迭代看起来像其他东西。假设一个直的2d数组(不是数组的数组),

    movl 8(%ebp), %eax  #pointer m
    movl 12(%ebp), %ebx #k
    movl 16(%ebp), %ecx #y

    mull %ebx
    movl %eax, %esi

.l  movl (%esi), %edx
    (and process)
    addl $4, %esi
    decl %ebx
    jnz  .l