Gauche > Archives > 2018/08/10

2018/08/10 02:43:46 UTCshiro
#
Linux/x86_64て引数のintをlongにしたらバイナリ互換性壊れるっけ? レジスタ渡しの分は平気? いやcallerがintのつもりで渡してcalleeがlongのつもりで読んだら上位にゴミが見えたりするのかな
2018/08/10 11:14:30 UTCkoguro
#
System V Application Binary Interface AMD64 Architecture Processor Supplement (https://software.intel.com/sites/default/files/article/402129/mpx-linux64-abi.pdf)の3.2.3 Parameter Passingを読む限り、intは8byteで渡されるようなので、大丈夫なんじゃないんでしょうか。
2018/08/10 11:20:51 UTCkoguro
#
19ページに"The size of each argument gets rounded up to eightbytes."って書いてありますし。
2018/08/10 17:14:06 UTCshiro
#
心配いらないようですね https://gist.github.com/shirok/efc2ad52b4620b3de69574334ebcc75c
#
int対象だと mov ..,%edi になったので一瞬あれっとなったのだけど32bit movは上32bitが0になるんだった。なのでlong対象でもdestinationは%ediのまま。