从C到ASM x64 GAS的字符数组

时间:2016-04-24 20:53:09

标签: c arrays assembly char 64-bit

我已经评估过在ASM函数中使用C中的数组。 弄清楚我需要将地址传递给该数组。但是在ASM中访问数组之后怎么样呢? (例如,数组[0],数组[1]等。)

C函数:

#include <stdio.h>

void asm_function(char *address);

int main() {

char array[] = "Abc";
asm_function(15, array);
return 0;

}

ASM功能:

 .type asm_function, @function

 .section .data

 EXIT = 60
 EXIT_SUCCESS = 1
 BUFF_LENGTH = 512

 format: .asciz "%s\n"

 .section .bss
 .lcomm buffer, BUFF_LENGTH


 .section .text
 .globl asm_function

 asm_function:

 movq %rdi, buffer

 subq $8, %rsp
 movq $0, %rax
 movq buffer_lancuch, %rsi
 movq $format, %rdi
 call printf       #prints whole String


 exit:
 addq $8, %rsp
 movq $EXIT, %rax
 movq $EXIT_SUCCESS, %rdi
 syscall 

我真正需要的是分别访问所有字符。 将欣赏所有提示。

0 个答案:

没有答案