This commit is contained in:
2025-10-20 21:58:00 +09:00
parent 99628ab532
commit 42efa4341b

View File

@@ -52,7 +52,7 @@ void sumstore(long x, long y, long *dest) {
```
```sh {cmd hide}
while ! [ -r 3_1.o ]; do sleep .1; done; objdump -d 3_1.o
while ![ -r 3_1.o ]; do sleep .1; done; objdump -d 3_1.o
```
### Integer Registers
@@ -267,7 +267,7 @@ long absdiff(long x, long y) {
```
```sh { cmd hide }
while ! [ -r 3_3.o ]; do sleep .1; done; objdump -d 3_3.o -Msuffix
while ![ -r 3_3.o ]; do sleep .1; done; objdump -d 3_3.o -Msuffix
```
**expressing with `goto`**
@@ -300,7 +300,7 @@ long absdiff(long x, long y) {
```
```sh {cmd hide}
while ! [ -r 3_5.o ]; do sleep .1; done; objdump -d 3_5.o -Msuffix
while ![ -r 3_5.o ]; do sleep .1; done; objdump -d 3_5.o -Msuffix
```
However, there are several *bad cases* for conditional move.
@@ -357,7 +357,7 @@ loop:
</table>
```sh {cmd hide}
while ! [ -r 3_6.o ]; do sleep .1; done; objdump -d 3_6.o -Msuffix
while ![ -r 3_6.o ]; do sleep .1; done; objdump -d 3_6.o -Msuffix
```
**general do-while translation**
@@ -426,7 +426,7 @@ long pcount_while(unsigned long x) {
```
```sh {cmd hide}
echo "jmp-to-middle translation"
while ! [ -r 3_7.o ]; do sleep .1; done; objdump -d 3_7.o -Msuffix
while ![ -r 3_7.o ]; do sleep .1; done; objdump -d 3_7.o -Msuffix
```
**general while translation#2**
@@ -478,7 +478,7 @@ long pcount_while(unsigned long x) {
```
```sh {cmd hide}
echo "while to do-while conversion"
while ! [ -r 3_8.o ]; do sleep .1; done; objdump -d 3_8.o -Msuffix
while ![ -r 3_8.o ]; do sleep .1; done; objdump -d 3_8.o -Msuffix
```
#### for loop form
@@ -560,13 +560,13 @@ long pcount_for(unsigned long x) {
<td>
```sh {cmd hide}
while ! [ -r 3_9.o ]; do sleep .1; done; objdump -d 3_9.o -Msuffix
while ![ -r 3_9.o ]; do sleep .1; done; objdump -d 3_9.o -Msuffix
```
</td>
<td>
```sh {cmd hide}
while ! [ -r 3_10.o ]; do sleep .1; done; objdump -d 3_10.o -Msuffix
while ![ -r 3_10.o ]; do sleep .1; done; objdump -d 3_10.o -Msuffix
```
</td>
</tr>
@@ -614,7 +614,7 @@ long switch_eg (long x, long y, long z) {
<td>
```sh {cmd hide}
while ! [ -r 3_11.s ]; do sleep .1; done; cat 3_11.s
while ![ -r 3_11.s ]; do sleep .1; done; cat 3_11.s
```
</td>
</tr>
@@ -667,7 +667,7 @@ void multstore(long x, long y, long *dest) {
```
```sh {cmd hide}
while ! [ -r 3_12.o ]; do sleep .1; done; objdump -d 3_12.o -Msuffix
while ![ -r 3_12.o ]; do sleep .1; done; objdump -d 3_12.o -Msuffix
```
Procedure call `call label`
@@ -687,7 +687,7 @@ Procedure return: `ret`
for example with above example
```sh {cmd hide}
while ! [ -r 3_12.o ]; do sleep .1; done; objdump -d 3_12.o -Msuffix
while ![ -r 3_12.o ]; do sleep .1; done; objdump -d 3_12.o -Msuffix
```
* with above `mult2` variable `t` is already stored in `%rax`
@@ -735,5 +735,5 @@ long call_incr() {
```
```sh {cmd hide}
while ! [ -r 3_13.o ]; do sleep .1; done; objdump -d 3_13.o -Msuffix
while ![ -r 3_13.o ]; do sleep .1; done; objdump -d 3_13.o -Msuffix
```