解析perl中的汇编代码

时间:2010-08-06 14:45:44

标签: perl parsing

0000000000033a1b subq $0x28,%rsp

我无法从上面的行中提取0x28。我能够从汇编代码的大列表中提取subq,但我只想要0x28,因为这给了我堆栈大小。我正在考虑使用substr()函数购买它有变化,另一个可能看起来像这样:

0000000000033a1c subq $0x000000b8,%rsp

在这种情况下我只想要0x000000b8。

我正在使用perl。

谢谢。

2 个答案:

答案 0 :(得分:3)

没有代码,我的猜测是你没有逃脱美元符号。因此,您要求它匹配行的末尾,然后 '0x28'

在任何正则表达式中,/\$0x(\p{XDigit}+)/都应该从该字符串中捕获'28'

答案 1 :(得分:1)

如果您输入以下格式:

instruction_address operand $stack_size,register

你可以这样做:

$a = '0000000000033a1b subq $0x28,%rsp';
$a =~s/^.*?\$(.*?),.*$/\1/;
print $a; # prints 0x28