整数一つをコンパイルするコンパイラ
code:c
int main(int argc, char **argv) {
if (argc != 2) {
fprintf(stderr, "引数の個数が正しくありません\n");
return 1;
}
printf(".intel_syntax noprefix\n");
printf(".global main\n");
printf("main:\n");
printf(" mov rax, %d\n", atoi(argv1)); printf(" ret\n");
return 0;
}
c言語で、ただ単にRAXに整数値をmovで入れるようなアセンブリをprintfで記述する $ cc -o 9cc 9cc.c
$ ./9cc 42 > tmp.s
code:s
.intel_syntax noprefix
.global main
main:
mov rax, 42
ret
$ cc -o tmp tmp.s
$ ./tmp
$ echo $?
これは直前の終了値をとるやつ