[英]Converting Assembly Language to Python Code
我正在嘗試將匯編語言轉換為Python。 當我這樣做時,我試圖盡可能地遵循匯編代碼。 我知道此特定代碼將需要嵌套條件語句。 我正在使用a,b,c,d作為存儲位置。
這是匯編語言:
0 IN a
1 LOAD d
2 COMPARE a
3 JUMPLT 6
4 JUMPEQ 6
5 JUMPGT 12
6 OUT c
7 LOAD a
8 ADD b
9 STORE c
10 DECREMENT d
11 JUMP 20
12 DECREMENT c
13 LOAD a
14 COMPARE c
15 JUMPLT 19
16 JUMPEQ 19
17 INCREMENT d
18 CLEAR c
19 OUT d
20 OUT b
21 HALT
這是我將代碼從字面上翻譯成Python的過程。
a = input()
if a<=d:
print c
c = a+b
d = d-1
print b
else:
c = c-1
if c<=a:
print d
print b
else:
d=d+1
c=0
print d
print b
我看到print d和print b包含在if和else嵌套語句中,因此,如果我不對代碼進行字面翻譯,也許應該看起來像這樣?
a = input()
if a<=d:
print c
c = a+b
d = d-1
print b
else:
c = c-1
print d
print b
if c>a:
d=d+1
c=0
我的最后一個問題是:這些翻譯中的任何一個正確嗎? 他們的評估方式不同。 還有更好的方法進行此翻譯嗎?
歡迎您記住其他有關轉換的提示或規則。
在此先感謝您的幫助。
是的,我看過的部分對我來說是正確的。 但是,將print b
放在if / else塊之后會更准確,因為所有執行路徑都在它之前合並。
asm笨拙(例如,省略前兩個條件分支,因此JUMPGT 12
會跳轉或掉下來),所以是的,它和/或Python還有很多空間。 初學者非常頻繁寫低效分支跳轉的一種方式或其他,而不是僅僅跳躍或下降通過。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.