请参阅ROP,请参阅this paper
我正在为AVR-8bit构建小工具目录,但我有些疑惑。 我将使用以下示例提出我的问题。
为了使v1 = v1 + v2; (v1和v2是变量) 相应的程序集是:
ldi r17, #value
ldi r18, #value
add r18,r17;
或
ldi r17, #value
mov r1, r17;
ldi r18, #value
add r18,r1;
或
ldi r17, #value
ldi r18, #value
mov r1, r18;
add r1,r17;
或
ldi r17, #value
mov r1, r17;
ldi r18, #value
mov r2, r18;
add r2,r1;
小工具是否会如下?
ldi r#, #value;
ldi r#, value;
add r#, r#;
ret
或只是以下内容与ldi r#,r#; ret
以及mov
组合?
add r#,r#;
ret
答案 0 :(得分:2)
ldi
正在加载一个常量,在运行时添加两个常量没有多大意义。因此,您的小工具仅为add; ret
,并且您希望通过使用其他小工具确保两个操作数位于相应的寄存器中。
但是,有一个小工具可以为寄存器添加常量。