久々に書いたのでメモ。
cc -ansi hoge.c
でコンパイルできる。
print(s,d) void*s,*d; {
__asm__(".quad 0xcfff48aef2fcffb1" : "=D"(d) : "D"(s), "a"(0));
__asm__("syscall" :: "a"(1), "D"(1), "S"(s), "d"(d-s));
}
main() {
print("hello, world\n");
return 0;
}
解説
mov $0xff,%cl
cld
repne scasb
dec %rdi
蛇足
どーでもいいけど,Dart v1のコードって昔のCをめっちゃ意識してるよな……。
main() {} // Dart v1では適格
追記(2024-11)
動かんかったのを修正。
repne
のとこコピペミスってた。
あと,NULL
までwrite
してたのも修正した。
参考
- How to Use Inline Assembly Language in C Code - Using the GNU Compiler Collection 13.0.0 (experimental 20221114) documentation
(.md
はGCC Machine DescriptionのMD)