這是我在網路上看到中正大學的一個題目
我解不太出來 有人會嗎
使用linux At&T的語法
main.c
------------------------------------------------------------------------------
---------------
#include <stdio.h>
int str_len(char *);
int str_sort(char *);
void main(int argc,char *argv[])
{
char *src_string=argv[1];
char *sorted_string;
int length=0;
length_string=str_len(src_string);
sorted_string=str_sort(src_string);
printf("length:%d\n",length);
printf("string after sorting :%s\n",sorted_string);
}
int str_len(char *str_1)
{
int __res;
__asm__ __volatile__(
);
return __res;
}
char *str_sort(char *str_1,char *str_2)
{
char *__res;
__asm__ __volatile__(
);
return __res;
}
----------------------------------------------
題目要求:
自行在 str_len 或 str_sort 函式中宣告自己需要的C變數
以傳入inline assembly中或是接收inline assembly輸出
但除了宣告C變數跟return以外
所有operation都必須在asm();中完成
輸出結果:
input--> ./main bcda
output--> length = 4
string after sorting : abcd
感謝