2021年4月24日 星期六

Calling Convention in LLVM (2)

Photo by John Gamell on Unsplash
Introduction

In the previous article, two files related to calling convention are introduced: <Arch>CallingConv.td and <Arch>ISelLowering.cpp. However, in <Arch>ISelLowering.cpp, we only discuss LowerFormalArguments(). The other two functions, LowerReturn() and LowerCall() would be discussed in this article and we still take the source code of Sparc architecture as an example.

2021年4月18日 星期日

[Effective C++] [閱讀心得]: public 繼承代表 is-a 的關係

Photo by Hamza NOUASRIA on Unsplash

所謂 is-a 代表能施加在父類別的每一件事情也要能夠施加在子類別身上,Scott Meyers 在書中舉了一個鮮明的例子

class Bird {
public:
    virtaul void fly();
    ...
};

class Penguin : public Bird {
    ...
};

在這個例子中, Penguin 是一種 Bird,但是 Penguin 並不會飛,這就違反了 is-a 的關係。因此,這樣的塑模方式並不正確。比較理想的方式是

2021年4月2日 星期五

LLVM 是如何處理呼叫慣例(Calling Convention) (2)

Photo by Markus Spiske on Unsplash
前言

前一篇文章中,我們提到了 LLVM 後端中處理呼叫慣例的兩個關鍵檔案: <Arch>CallingConv.td 與 <Arch>ISelLowering.cpp 。不過在 <Arch>ISelLowering.cpp 中,我們只探討了 LowerFormalArguments() 函式。另外兩個函式 LowerReturn() 與 LowerCall() 將於本篇文章討論。