Gcc插件 - 为生成的程序集添加标签

时间:2017-03-19 18:27:27

标签: gcc plugins

我正在尝试使用插件生成带有以下代码的标签:

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}); }

0 个答案:

没有答案