このアセンブリ コードを C に変換しようとしていますが、助けが必要です。whileループと関係がありますが、whileループで何が起こるかわかりません。私はしばらくそれを見てきましたが、「while(something =! null)」が含まれていると確信していますが、コードが「movl」を %eax に実行するとどうなるかわかりません。
このセクションは、コンパイルされた x86 アセンブリ コードです。
whilecode:
pushl %ebp
movl %esp, %ebp
jmp .L20
.L22:
movl 8(%ebp), %eax
movl 16(%eax), %eax
movl %eax, 8(%ebp)
.L20:
cmpl $0, 8(%ebp)
je .L21
movl 8(%ebp), %eax
movl 4(%eax), %eax
cmpl 12(%ebp), %eax
jne .L22
.L21:
cmpl $0, 8(%ebp)
setne %al
movzbl %al, %eax
popl %ebp
ret
これはノードの定義です:
typedef enum {CHAR,SHORT,INT} Type;
typedef struct node {
Type thetype;
int data;
void *opaque;
struct node *ptr1, *ptr2;
} Node;
これは、while ループの関数定義です。
/* a while loop */
int whilecode(Node *somenode, int data)
{
// FIX ME
return 0;
}