Das Ziel ist also für mich den C-Code zu schreiben, das zu dieser Baugruppe entspricht:Assembly - js im Vergleich ja Anweisung
0: 85 f6 test %esi,%esi
2: 78 13 js 17 <part3+0x17>
4: 83 fe 07 cmp $0x7,%esi
7: 77 14 ja 1d <part3+0x1d>
9: 8d 0c f5 00 00 00 00 lea 0x0(,%rsi,8),%ecx
10: 48 d3 ff sar %cl,%rdi
13: 48 89 f8 mov %rdi,%rax
16: c3 retq
17: b8 00 00 00 00 mov $0x0,%eax
1c: c3 retq
1d: b8 00 00 00 00 mov $0x0,%eax
22: c3 retq
Ich bin ein wenig verwirrt, weil die erste Schleife das% esi Registers Prüfung endet vor die zweite Schleife endet.
Ist die zweite if-Anweisung, die% esi mit 7 innerhalb der ersten Schleife vergleicht? oder ist das ein wenn, sonst wenn situation ??
Ich sehe keine Schleife überall. Ja, es ist 'if' /' else if'. Natürlich ist alles, was du zurückbringst, du brauchst das "else" nicht. – Jester
'if (esi < 0 || esi > 7) zurück 0; zurück (int64_t) rdi >> (8 * esi); '? – EOF
Fun Tatsache: da beide Fälle das gleiche tun ('return 0'), und' ja' '' js' enthält, können Sie einfach 'js' ignorieren. – Jester