0000000000033a1b subq $0x28,%rsp
我无法从上面的行中提取0x28。我能够从汇编代码的大列表中提取subq,但我只想要0x28,因为这给了我堆栈大小。我正在考虑使用substr()函数购买它有变化,另一个可能看起来像这样:
0000000000033a1c subq $0x000000b8,%rsp
在这种情况下我只想要0x000000b8。
我正在使用perl。
谢谢。
答案 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