我正在尝试使用插件生成带有以下代码的标签:
ldrb r3, [fp, #-5] @ zero_extendqisi2
add r2, r2, r3
movw r3, #:lower16:b1
movt r3, #:upper16:b1
str r2, [r3, #4]
虽然这在我尝试为我的intel处理器生成代码时有效,但如果我在arm的交叉编译器中运行此插件,则标签的名称将更改为具有随机名称的本地符号。例如,不是获取“test_text:”而是获得“.L4:”。此外,还添加了一条附加说明。
以下是未启用标签生成代码时生成的代码示例。
ldrb r3, [fp, #-5] @ zero_extendqisi2
add r2, r2, r3
.L5:
add fp, fp, #4
movw r3, #:lower16:b1
movt r3, #:upper16:b1
str r2, [r3, #4]
现在,它遵循使用第一个显示的代码生成的代码(在树中生成标签和gimple表示)。您可以看到test_text标签由.L5替换,并且标签下方添加了一条添加指令。这怎么可能?
<bb 4>:
_8 = i_2 % 3;
_9 = _8 == 0;
test_text:
div_3 = _9;
_11 = i_2 % 5;
我在CFG通过后运行我的插件。另外,我正在使用Linaro交叉编译器arm-eabi-gcc版本6.3.1。
最好的问候
编辑1: 还发现,通过使用-fdump-tree-optimized,直到这个阶段一切都很好。 * .optmized文件的部分输出:
for (var i = 0; i < 10; i++) {
//console.log(JSON.stringify(item.SmallImage));
message.attachment.payload.elements[i] = {
"title":items[i].ItemAttributes.Title,
"image_url": items[i].LargeImage.URL,
"subtitle":items[i].ItemAttributes.ListPrice.FormattedPrice,
"default_action": {
"type": "web_url",
"url": "https://www.google.it",
"messenger_extensions": true,
"webview_height_ratio": "tall",
"fallback_url": "https://www.google.it"
},
"buttons":[
{
"type":"web_url",
"url":"https://www.google.it",
"title":"View Website"
},{
"type":"postback",
"title":"Start Chatting",
"payload":"DEVELOPER_DEFINED_PAYLOAD"
}
]
}
//sendMessage( senderId, {text: item.ItemAttributes.Title+" PREZZO**:"+item.ItemAttributes.ListPrice.FormattedPrice});
}