AVR架构上ROP中的小工具

时间:2013-10-28 17:07:24

标签: c security assembly avr

请参阅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

1 个答案:

答案 0 :(得分:2)

ldi正在加载一个常量,在运行时添加两个常量没有多大意义。因此,您的小工具仅为add; ret,并且您希望通过使用其他小工具确保两个操作数位于相应的寄存器中。

但是,有一个小工具可以为寄存器添加常量。