同一段汇编,换个乘数

运行下面这段程序,填写它打印出来的结果。 def run(src, regs=None, guard=200): R = {"eax": 0, "ebx": 0, "ecx"

开始练习 →

自己写:认出这段是不是循环

给一段汇编,判断它有没有「往回跳」。两段各判一次:一段有循环,一段没有。

开始练习 →

把循环反推成一个表达式

这段汇编在做「加 k 次 m」。写一个函数直接算出结果,并和逐条跑出来的结果对一遍账。

开始练习 →

数一数循环体被执行了几遍

同一段汇编,把循环次数分别设成 3 和 7,数出循环体那四条指令各被执行了多少遍。

开始练习 →

⚠️ 猜对了形状,猜错了边界

把循环猜成「加 k 次」,但如果 ecx 一开始就是 0 呢?⚠️ 汇编里这个循环至少会执行一次。把两种猜法的结果都打出来。

开始练习 →

读懂一段汇编要说清哪几样

说自己「读懂了」一段汇编,至少要说清【0】。

开始练习 →

怎么验证自己读对了

觉得自己读懂了一段汇编,最硬的验证办法是【0】。

开始练习 →

一段陌生汇编跑出来是多少

运行下面这段程序,填写它打印出来的结果。 def run(src, regs=None, guard=200): R = {"eax": 0, "ebx": 0, "ecx"

开始练习 →

自己写:把这段汇编翻成 Python

把上一题那段汇编翻成等价的 Python,并和解释器跑出来的结果对账。

开始练习 →

相等的时候走哪一支

把两个数都改成 7,再跑一次。把汇编的结果和「写成 >=」的版本都打出来。

开始练习 →