[汇编与C语言关系]3. 变量的存储布局
以下面C程序为例:
#include <stdio.h> const int A = ;
int a = ;
static int b = ;
int c; int main(void)
{
static int a = ;
char b[] = "Hello World";
register int c = ; printf("Hello World%d\n", c); return ;
}
我们在全局作用域和main函数的局部作用域各定义了一些变量,并且引入一些新的关键字const, static, register来修饰变量,那么这些变量的存储空间是怎么分配的呢?我们编译之后用readelf命令看它的符号表,了解各变量的地址分布。下面的清单中原作者把符号表按地址从低到高重新排列了,并且只截取了我们关心的那几行:
aaarticlea/png;base64,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" alt="" />
变量A用const修饰,表示A是只读的,不可修改,它被分配的地址是0x8048540,从readelf的输出可以看到这个地址位于.rodata段:
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAj4AAACsCAIAAAD0YTGaAAAgAElEQVR4nO2d2VNbx5748ydkqlJ1q1KZyUPmYXzrzqRq5t4b5yapcUi8O1HYJQRazhESgrBYxhRLzGoTHLNYlonNZoSMWQyYRVjGAoORhc2+GTCLARkhdp1+mN/LfZn8HnrSda6EFoTAxv5+nvr0Od397bP0t7u/fb793m8AAAAAcKB477ffflOpVMXFxX//+9///ve/V1VVVVVVQRjCEIYwhCH8ZobT0tLe++233/785z+fPHkSIYQQ4nA4HA4HwhCGMIQhDOE3M/yHP/zhvd9++02v17948QIBAAAAwBvPsWPH3vvtt9/+53/+53VLAgAAAABu8X+qKyMj4/Hjx69bGAAAAABwzf+pruPHj9fU1LxuYQAAAADANf+nusDWBQAAABwUwNYFAAAAHDDA1gUAAAAcMMDWBQAAABww3ixb1/Ly8qtXr163FAAAAMAbjVu2LqvV2tDQUFBQ0N7ePj09zTCMx+UxDONERxYVFaWkpHicuXP6+vq0Wm1vby9C6NmzZ1qttr+/f/fZzs3NicXinJyc3WcFAAAAuINrWxfDMGKxuLi42Gg0Xr169Z//+Z9fvnzpcXkmk0mhUDg6OzIyYjQaPc7cOe3t7T4+Pnq9HiH08OHD//7v/3706JFXcnZeKQAAAMC7uLZ1jY2NpaamkkOFQmEymcjhixcvKisrm5ubV1ZWbBL29/eXl5c/ePBgY2NjaWkJIbS4uNjW1iYQCHp6enp6etiDHqvV+uzZs56entnZWZt8GIbp7u4uLy/HAyaMxWLp6enZ2Njo7OwsKyubnp52p7Y0TZOwSCRin3JUkZmZmerq6oqKChuFzTBMV1dXSUnJwMCAjeoym80NDQ1VVVXsuqyvr/f09IyMjCCE5ubmGhoaLBYLOTs9Pa1Wq2tqakwmE75X7NyeP3/uTu0AAADeEVzbupaWlrhc7ubmpv2pGzduREdHNzU1aTSa4ODggYEBcioxMTEzM7O1tbW4uPjo0aNXrlxBCBmNxosXL37zzTd5eXl5eXkqlYrMPa6srBQUFFy8eDEhIYFdxObmJp6O02q16enpcXFxOMnz58+PHz8eEBBQUFDQ3Nzs5+eHtYJzHKkuRxUZGho6d+7c3bt3W1pa+Hz+8PAwjrdarRKJ5OLFiy0tLQkJCfHx8UR1PX78mM/nV1dX37t3Lzw8/M6dOzj+5cuXeXl5vr6+JSUlQqGwoqLi/Pnz+FRra6tQKGxubq6vr+dwOPheEb744ov33nuvr6/PZe0AAADeEdyydXV3d0dHR8vl8szMzMnJSRz5/PnzH3/8kVyzsrJCURQONzY2Xr9+nZwyGo3FxcU47HxuzWQy2aiun3/+ua2tjRyq1Wq1Wo3DKSkpWq0Wh4eGhtLT011VFv3pT3+S/c4f//hHlxVh09vb+8svv+BwWVlZRUUFOZWRkUEqFRQUtLGxQU7JZDL2IPXzzz8vKCiwyTktLY1MXc7NzeEpTcK1a9d4PJ7ZbHZZOwAAgHeEnf3XNTY2xuFwsPbSaDQnTpygWXz++edbW1vIblKRzU5VF3uchBDa3NyUyWQ4nJKSQuYJp6en3Vnfse2oy0lFxsfHKYqiKEoikQQGBmZnZ+MkFEWx9dPo6Ciu1MLCwqeffsrO6sSJE2xVtK1SXF1dTUlJkclkEonkl19+WV9fd1kRAACAdxnXtq6mpia29UWn0+EhVHt7u0ql2jZJenr62NjYtqd2qrokEgl7rnJ+fp4k95bqclKRoKCghYUFHB4aGiKqKzY2lm36evToEZZqa2tLLBa7KQCBFMEwTGtr69mzZ11WBAAA4F3Gta0rJSWFzMUxDBMTE4OXV1it1pCQkPHxcXKqpqYGq5mxsTH2uGRwcPDnn3/G4bW1NfbIw0bD2auujo4OhUJhtVoRQhsbGxRFEYOTt1SXo4owDBMaGkrEjoiIIKqrr6+Poig8MrNYLBwOhyjU1NTUhoYGUorBYCA5Iweq69ixY2TJxszMDBlWYmQy2aFDh9xchwIAAPAu4NrWpVari4uLw8PDIyIiBAIBe3C2tLQUFxcnl8uFQmFoaOitW7fIqY6ODqFQKJPJpFJpUlISe/5QpVJRFCUSiYRCYWFhIY4sLi6maVosFnM4HJqmpVIpse40NzeLRCKZTCYSibq6unCkTqfDV+IFgQqFgsPhDA0NOaoFVrqnT5/GJV6/fv3UqVNk0Yejity+fZuiqPDwcLFYXF1d7evre/fuXXxKq9WGhIRQFBUWFvbo0aPvv/8eG+GsVmtubq5UKqUoKjQ0NC0tbW1tDSHU2NgYFRX13Xff4YnEkpISIltaWlpERARN0zKZjKbpubk5tuR8Pv/DDz+cmJhwVDUAAIB3DfBhCAAAABwwwIchAAAAcMB4s3wYAgAAAIBLYL8uAAAA4IABti4AAIADBiw53kNbF4/Ho2n6/v37+PDRo0darRYvKF9eXtZqtVqtdnR01Hkmg4ODNE37+Phs64nKhrm5Oa1WSzxCYffw9+/fdyct8Brp7u7W/iPPnj173UK9c5hMJnzz79+/72h3CCf7JNy8edPN7/R1wTBMc3NzXl5ee3u7/dkbN25QFCWTyeRy+erqKol/8eKFVCrFS6yrq6v3TVqLxXLr1i2VSjU8PGxvzfnXf/3XfZPEOfPz81o72O+PwWAoKCioqal59eqVI1cVHrCHti6b/5Pq6ur+9Kc/Xb16FSFkMpnUarWPj4+bfuJlMpk7n8T4+PjZs2f/+Mc/4jfv4cOH0dHRCQkJ4J/iDScoKAi7+PLx8cEBG+fIwD4wMzOD7/zx48edbKrgxKuAm9/pa2F9fT0sLOzGjRtPnz5VKpUymQz/LYoZGBggPkVtoGl6fn5+v8T8PxYXF319fRsbGw0GQ1xc3OHDh20uqKqq2meRHDE5OZmYmBgZGan+nWPHjpHX4JdffklNTX3y5ElNTc1f//pX4sZv9+yhrctGdSGE8J9bxHkE+T93cXGxp6dnZmYGITQwMGDf6XP/k6irq/vpp5+Iq/vKysrGxkYcZhhmYGCgvLy8traWKLOxsbHJyclHjx7pdDqGYR48ePDw4UN2hr29veXl5R0dHbvZpQxwDnlVyCuBY7C7/WfPnuGbPz8/39PT8/z58xcvXvT09Fit1u7u7pKSks7OTpunA0/NY/AXGhkZyY50sk+CyWTSaDS1tbWrq6vkO3W+T8JrITk5WafTkcOKigriTXR0dPTq1asXL17EO1osLy/j+OXl5Z6eHg6Hg+NdThF5kcLCQnZDJJFISHh2dhbLY5MES0tge3uwWq1tbW1qtXpwcHAvpNVqtWydFBMTQ5prdh+0rq7Oi3N7e2jr2lZ1jY+PR0dHk0McwB7l4+LiFArF+fPnVSrVzZs3bbJyX3XV1NRER0djHxZs1VVbW5uVlaXVaqurq4ODg7GzD41G8+GHH2ZmZqalpX377bf5+fkKheLBgwcIIYZh4uLisP/7q1evhoWFsacRAC9SVlaGA+SVwDELCwvffPNNeno67mo8fvz466+/Li4ubmlp+frrryMiItLS0rRa7aVLl4RCIe5Ew1PbDdPT0/Hx8QghiURC7puTfRLa29sDAgJqamo0Go2/v/+ZM2fwd+pkn4TXRXBwMPuQYZjAwEAcLi8vl0qlAoEA72hBVNTo6GheXt7hw4dxfHl5+b5J29raevHixW1PPXjwIC8v78svv7SJ12q1pAo8Hi8uLg7Hm0wmHo9348aN1tbWlJSUCxcueF1aorpu3LiBEMJOGDAhISF7NGbdQ1vXtqoLIYTHj+gfvSKZTKZ/+Zd/sXGazs5qR6prYWEBu5tiqy42ubm5pNsSFBSEECJJBgYGsMOn8vJyjUZDkgwMDLD3LQP2AntHWYODgz/99BMOr66ukk5cbGws/k4wGo0Gu9aEp7YbsrKysJu35ubm0tJSHOlonwSGYQICAsiHaTKZ/vCHP7C/0233SXgtbG5u2r9afD6fhBsbGx3NZb2uuWuNRoP361CpVPZjVvvWdXx8HFuIBwYGRCIRXlWAEPrxxx/ZvniuX79O1h94C61W6+PjQ9P0v//7v9ucmp6ePn/+fFRU1Pnz57u7u71Y6P7ZutDvDdPq6iqPx2MYxkZ1OXE7u1PVhRC6evVqU1MTW3XpdDo+n48dO33xxRcGg4Etlclkio2NRSw3u1KpVCwWs93A83g8N+sOeMa2Ph6lUim27l65coXYYGJjY9kesywWi1wuR/DUdgHDMIcPH05ISMBDq2PHjuF4R/skTE1N2XgcDQ4OZn+n2+6T8FpgGIatqDDscdgbqLoweK7P19eXbZlD27WumJmZGS6Xy94v9+uvv2Z/DmFhYVlZWd4Vkoy6nAzpFhcXY2JivD9huG+2LhyoqqoqKSmxUV1OPMp7oLq2tra4XG55eTlWXS9evGB/gUql0qXqSktLI65+gf1hW9U1MDBw4cKFtbU1oVBIImNjY5ubm8mhXq/Py8tD8NR2wePHjy9duvTydxQKBd6e29E+CUtLSxEREewcjh49yv5Ot32arws+n89u0GdnZ9mbPLxpqquyspJ9mJycPDU1xY7ZVnWZzWYul7u4uMiOFIlEe23xtbF1dXV13bt3DyE0Pj7OtkNtbW15sTez37YuHGAYJiwsjMvlklNeV10IIb1e/+WXX2LVZTAYLl++jONnZ2fdGXXNzs7yeDxis11bW6urq3NHBsBjHDV24eHhmZmZbMN1bGzsd999p9Pp1tfX9Xq9v78/ts3AU/OY6OhosoQKITQyMoI70U72SZBIJGSRcH19/T/90z+9saqro6MjKioKj102NzcFAgF7zcKbprqOHDlCrCerq6t+fn4uR10bGxsCgQD3NhBCxNal1WqTkpJI8pmZGUd2GY+xUV3kUKfTHT9+nLwSd+7ccbS9lAfsn63r9u3bp0+flkgkeCXh4OAgWTaTn58vk8m+//57PKTt7Oy0z8od1bW8vMzn84OCgohD+rNnz2Jn8wzDXLhwQSqVSiSSqKgolUrF5/Oxljp9+nRnZ6fZbP7uu++ePn06OTnp5+eH1+cMDw9LJBKZTBYaGkpRlL1ggLe4efMmTdOnT5+madr+Vezp6fn666/ZMbGxsYuLi1euXAkPD8/NzWWvxYCn5gGVlZWnTp2iaRpvJDswMEDT9KlTp3DPz9E+CSsrK3FxcSKRSCQSpaenX758OTw8/NWrV072SXiN6HS6sLAwvEsD6akzDBMdHc3lcgMDA2malkgkZCK6paUF3wRcC7Ztda9RKpWZmZlRUVEymUwoFJLfHOfn58PDw2maPnPmDJaKWHabm5vxZhpkYpDk1tTURFGUVCoNDQ2Nioryrm2op6eHx+Phu0em6FtbWxFCAwMDV69elUgkcrmcoqiMjAwvjv/20NZF07TZbCbWQs9gGMZsNlMU9cb+LwLsAyqVir2yGSEUGxsLSwcB4J1lD21dOTk5CoWira1tN5kMDw8rFAqFQrFLFQgcRDY2NgwGQ3d398mTJ9mbsU1OTvJ4vPb29v381QYAgDcH8GEIvLmYTKZr164plUqlUnnnzh0Sf//+fRxJdv4EAOCdAvbrAgAAAA4YsF8XAAAAcMBwbesaGhqydwyMLU/Pnj2jafqHH37Y/WTj48ePcc6tra1sPyIIoaSkpB2tT11bW2ttbSWi3r9/32ZdqSN25CLaiZttL94WAAAAwB7Xtq7u7m4Oh/Prr78Sx8AnT540m83kArVabbP6ywOamppyc3ODgoIqKirITzkER7+Ob4vFYqmoqFCr1UePHlWr1RqNxs3ViTtyEe3SzbZXbgsAAABgj1u2roSEBPY+K2fPnmX71Nq2jV5ZWamvr79z587y8vLExARx/u2EsbGxzMzMbU9h1fXq1auenp6nT5+6udrQRuFZLJaenp6NjY3Ozs6ysjL2Xm0eu4je1s02BlQXAADAHuGWrYuoLnvHwGi7NnpqaiogIKCysrKmpiYwMPDrr78uKChwuWmWS9XV0tLyb//2b3l5eW5uoGCjup4/f378+PGAgICCgoLm5mY/Pz+yKaVnLqK3dbNNANUFAACwR7j1X1dCQkJYWBhN035+fvZn7dtomUxGZt7MZvMnn3zijijOVVd3dzePx7Nxz+Uc+2nGlJQUrVaLw0NDQ+np6eyzO/X4sq2bbQKoLgAAgD3Crf+6yKhrW8fA9m20je8ym51yHGGjuth5Hjt27NNPP3VzS2XCtqqLzBNOT0+npKSwz+5IdTlys00A1QUAALBHeGLrssG+jRaJRMRHu9Vq/c///E93RLFRXWxFQlHU2tpaaGhoX1+fO1lh9lR1OXKzTQDVBQAAsEfszNa1LfZtdFdXF03Tc3Nzi4uLUVFRu1ddWAmtrq6GhIS4v0f1nqouR262CaC6AAAA9gjXti61Ws3hcPD2fXh3Y0J8fDxN04GBgTwej6bpjIwMcmpwcDA+Pj4mJsZoNLqz90FmZqZAIPD19SXuhwUCAT6VnJxMlvClpKScPHmSOIbfFpPJJJVKiXNluVyOh4A6nQ57Vsbb9igUCg6Hgz3j7dRFtHM3205uCwAAALB79sOHYUhIyB7lDAAAALyD7JUPQ7PZbDAYurq6MjIylEqlF3MGAAAA3nH2yofh2NiYUqm8fv26zRwjAAAAAOySPdyvCwAAAAD2AtivCwAAADhgwH5dAAAAwAED9usCAAAADhhg6wIAAAAOGGDrAgAAAA4YYOsCAAAADhhg6wIAAAAOGGDrAgAAAA4Y7tq6SkpKPv74Y+xels36+vrhw4dPnDjhfpK+vr5PPvkkNTXVPolMJjt06BBx7u4yKwAAAOAdxF1bl0qlev/99+2vWVtbO3To0Oeff+5+EqPR+MEHH5w9e9Y+CZ/P//DDDycmJtzMCgAAAHgHAVsXAAAAcMAAWxcAAABwwID/ugAAAIADBvzXBQAAABww3ixbl9Vqfd0iAADwfzj6Hp18pzv9hK1WK8MwHmS17VkPGhAv1vHACbw/eHa7XLKHti4ej0fT9P3790nMzMxMbm7uyZMn9Xo9+8rNzc2kpKSwsDCJRCIQCEwmEzk1ODhI07SPj8/m5ubuRfKien4TNP3bxOTkpPZ3urq6VlZWcHxXVxeJ7+3ttWnmVlZW1Gq1UqkcHR21yXBkZOTatWslJSVTU1OTk5MIoaGhIZKVXq83m83k4rW1tdbWVnL2/v37+LsaHR3V/iNtbW0klcViuXXrlkqlGh4efsveh6mpqaCgILFYLBAIXr58SeJNJpNYLJZIJDwer7m5mZ1Ep9P5+/uLxWKFQmHfKtXX13/11Vfs/14YhklMTKQoSigUXr58mX1xaWlpSEgITdPBwcFGo5F9imGYwsJCgUAQHh5eUVHhZuk7quPGxkZERIRIJAoODrYxozgqxYnACCG9Xs/n88PDw9l/BDkqfR8EZhhGq9VGRUUJhUL2xUlJSSKRyB1J3MQDgd1nD21dMpnMJqa+vr6jo6O4uFin07Hjp6en29vbcXhsbMx+3bxMJvOK6pJIJLvPBOMtkQDMwMAARVFpaWlqtbqwsJC80/fu3fPx8VGr1eXl5ZcuXeLxeGtrazjJ+Pi4n59fQ0PDkydP4uPjr169SnK7fPlyTExMV1dXR0eHQqE4fPgwQqi7u5vD4ahUKrVaffPmTS6X++jRI3y9xWKpqKhQq9VHjx5Vq9UajQY/XIVCcfPmTbVajWVQq9VnzpzBSRYXF319fRsbGw0GQ1xcHC7irYGiKKxmxsfHIyIiSHxsbOz4+DhCiGEYHo9Hehirq6sBAQH4ppWVlZWVlbFzW19f53K5SUlJ7P9eNBqNWq3G4ezs7IcPH5JTVVVVuI+yvr7O4/HYWSUmJt65c8dGWuel77SOubm59+7dQwhtbGz4+vqS3pKTUpwIXFtbGx8fv7W15Wbp+yCwyWQqKipaWFigadqmCPtGezfsVOAdsYe2Lkd3obS01EZ1sVlbW6Moyj6rXeqJ9fX1np4ePz+/nt9ZX18nZ81mc0NDQ1VV1ezsLIk0mUw9PT34Q11aWurp6RkZGcGn+vv7AwICDAYDzmpxcXE3sgGYwsLCzs5OHF5fXw8LC8Nh9gem0+mUSiUO+/r6su+8XC5/+vQpQujJkydxcXHsnDMzM3EgISGB9P42Nze3fdPYhwqFAg/OiAzkgsLCQnZr68Ve0WtndXWVfc8DAwNJ48Lulaempg4ODuJwQ0PDrVu3cHhra4vL5bIzzM7Obm9vT0lJYauu5ORkcqjX69k9DzahoaEk3N3dnZ6ebn+N89J3WsewsDASzszMfPLkyY5KYQu8trbG5XLtm2Ynpe+nwNuqLqvVqtPpKioq8FwFm/7+/vLy8gcPHmxsbCwtLXld4B2xh7aunaqu8fHxO3fucLlc+xH37lXXy5cv8/Ly/va3v+X9ztzcHD71+PFjPp9fXV1979698PBw0qczGo3/8R//oVKpEEJDQ0P/9V//lZ2djU9dv379yy+/vHLlCs7KXmDAA9iqi2GYkJAQHGZ/ADU1NUVFRQihsbGx8+fPs5NPTk7GxMQghM6ePTs/P79tEWzVZTQa5XK5zQU2L61Go9nY2GDLQLqura2tFy9e3GkdDwT9/f05OTnkMDo6mszhFxUVXbp0yWKxdHV1+fv7kzmo/Px89lcgEAhIeHZ2ViqVIoRsVFdfX59AIJifn5+cnPT395+ammLLYDab7969GxcXd+PGDRIZHx//8uXLtra2GzdusHuZTkr3oI7sDk1tbW1lZaU7pWwrcHNzs1qtHhoaUqlUz549c6f0fRMYbae6RCJRaGioUqlsamqSSqWlpaXkVGJiYmZmZmtra3Fx8dGjR69cueJ1gXfEHtq6PFBdSqUyKCior6/PPiuvzM7ZPyqEUFBQEG6eSFnkFr98+ZLH483NzaWlpWk0mr0QCSAUFhbW1NRMTEwYjcbw8PDa2loc7+/vr1Qqc3NzIyIiyNxLU1NTeXm5TQ58Ph/944dhQ0JCAp/Pp2naz8/vo48+Ghsbs7nA0Uu77Zuj0Wiio6PlcrlKpbJYLG5X9E3HYDCQoS1CKCUlhdio5ufnjxw5Ehwc/Nlnn7En7rKzs4eGhsgh+3ZFRkZitWSjuqxWa1hYGIfDOXHiRExMjM2wY2lpqbS0VCAQsEsJDw+/cOFCdna2Xq8PCQkhuTkp3YM62ozySfPtvJRtBS4uLk5MTAwPD+/o6Dh37tzdu3ddlr5vAm8b85e//KW7u5scUhSFu/iNjY3Xr18n8Uajsbi42OsC74h9tXVhnE8Yrq6u4gbIJqs9Ul0LCwuffvopzeLEiRPsVSSLi4uHDh3CY6+9EAkgFBYW0jSdmpqal5fHnqzg8/kGg+Hhw4c8Ho90Xe2nmDY3N/FAjaIo/GhWVlZkMhlN099++y2elGCPuqanpwMDA23GZztSXRir1drW1ubr6/vWrI/t7+/Pysoih7GxsWR2SCwWz8zMIIQYhpFIJOQx5efnd3V1kSTkdvX29gYHB+v1er1eLxQKGxoayDWXL19uaWnB4aKiIpuuISE8PJw8sujoaDJhuLi4SIzijkr3rI7s0UldXR2xpLhZClvg2traY8eOYa3MMAzpVDkpfT8Fto8JCAhgH1ZXV2N1q1AoXI4Ldy/wjnjjbF0IITy9YJPVHqmura0tsVjs6Hqr1RoXF1dZWcnn87HRy+siAQT2hCEb8tQ2NjYCAwPxJ7SysmLTxamtrcU9jKysLJt8iIWGrboQQnV1dfaD6W1ls39zbGY5kpOTbaa8Di4Wi4X9UbDvM3tEW1VVVVdXh8NNTU03b97E4fX1dXLDX7x4Ufo7HA6H3XOnKIqMtF69ehUbG7utMIWFhaRXfevWraamJhxmGIZY/h2V7lkd2dapjIyM3t7eHZXCFnh6ejo+Pp6cIm+Xk9L3U2D7t/ro0aPsFSXXr1/v6OhACKWnp9tPUXhd4B3xRti66uvrSekDAwORkZH2We1ITzjyNC8QCMiDmZiYwPOEqamp7M6gwWDAWmpraysyMhKLury8HBYWxh59nz9/nsxXLC0tubm8FXCCS9WFEBodHY2OjsbhnJwcYoWen5//4Ycf8OLD5eXlwMBAMjvBMAyxnNss0+DxeDYfpPuq68iRI2R0vrq66ufn99aMuhBCIpEI30CDwcC2KcrlcvwfgtVqFYvFxOC0sbHh5+eHP9IrV67g9WM22EwY/vrrr0T95+Xl1dfX47DRaCRNv9ls5nK5ZE2p2Wzm8/n4E66pqSF2R3dKd7+OeXl5WCWbTKbg4GDSyDoqxYnAuBQ8sp+cnGSvHnJU+j4ITNj2rf7pp59wDrOzs0FBQfhuj42NURRFDCuDg4M///yz1wXeEftq6yotLaVpOiAgAP/yRWZ+8dLJ0NBQiUQSFxe3vLxsn9WOVJcjT/NtbW0CgYCm6bCwsISEBPyGWa3W3NxcqVRKUVRoaGhaWhqOz8jIOH369C+//IIQMhqNYWFhp06dIos7ZmZmBAKBVCoNCwuTyWTPnz93XzzAHq1WGxAQgA1R7D5Henr66dOnaZomc1O5ubn5+fk4XFBQIBaL5XK5XC4njwYhND8/HxUVFRoaKpfLaZouKSlBCFVUVHA4HJFIRNM0RVEURZGftEwmk1QqpWn6zJkzNE3L5XLyler1epqmsQxknQ5CSKlUZmZmRkVFyWQyoVDINsK/BczOzorFYqFQKJVK2d+jyWTCtzQ0NNSmA9rZ2cnj8QQCQWZmpn1jlJyczOFw2P+9MAyTkZFBUZRIJCooKCDxFoslKSkpNDQUPyObvkVXVxd+SVJSUth9Beel76iOm5ub8fHxQqGQy+UODw+7rKNzgV++fCkWiymKkkgk7Dk3R6Xvg8CLi4vh4eHkrSZve3JycmRkpFqtxn+hSaVS9jfV0dEhFAplMplUKk1KSnJn/tADgd1nD21dNE2bzWb7Hxp2BMMwZrOZWC8AAAAAYA9tXchOWEQAAB12SURBVDk5OQqFgu19wAOGh4cVCoVCodilCgQAAADeGt4sH4YAAAAA4BLYrwsAAAA4YLxZ+3XtwxotrxfxNq0rAwAAOBC4tnWZTCbiTpu9dGd8fFyr1ZKFVdjDN9s7y47wwI/yXhfhyL8yYVuH0AAAAMBe49rWNTMzo1arRSLR8ePHiadthNCzZ88+++wz8odgUVGRj4+PzX+77uOBH+W9LsKJf2Xk2CE0AAAAsNe4a+sSi8ULCws2PwsPDg6Gh4czDLO5uRkUFOTxaMkDP8r7WYS96nLkEBoAAADYB9yydRF3JhKJZHV1lX1Ko9Hk5+efO3cO+wvxDA/8KO9nEfaqy5FDaAAAAGAfcOu/rqysrP7+foRQc3OzvZdfPp/vpiMTR3jgR3k/i7BXXY4cQgMAAAD7gGtbF8Mwhw8fTkhISEhIiI+PP3bsGPvsyMiIWCzezWwh8siP8n4WYa+6HDmEBgAAAPYB17aux48fX7p06eXvKBQK4q9vdXU1MDDQbDZPT0/zeDyP1yx44Ed5P4uwV12OHEIDAAAA+4BrW1d0dPTCwgI5HBkZuXDhAg5HRkYSf/U6nS45OdljOTzwo7xvRWy7wtCRQ2gAAABgr3Fh66qsrDx16hTx2z0wMEDT9KlTpxobG2/cuHHixImMjAx8pUKhOHbsWFVVlWdyeOBHea+LcORfGePIITQAAACw14APQwAAAOCAAT4MAQAAgAPGm+XDEAAAAABcsof7dQEAAADAXgC2LgAAAOCAAbYuAAAA4IABti4AAADggAG2LgAAAOCAAbYuAAAA4IABti4AAADggAG2LgAAAOCAAbYuAAAA4IDhrq2rpKTk448/bmxstIlfX18/fPjwiRMn3E/S19f3ySefpKam2ieRyWSHDh2y3wTSUVYAAADAO4i7ti6VSvX+++/bj8zW1tYOHTr0+eefu5/EaDR+8MEHZ8+etU/C5/M//PDDiYkJN7MCAAAA3kHA1gUAAAAcMMDWBQAAABww4L8uAAAA4IAB/3UBAAAABwywdQEAsD1Wq3VH8c5PObqeYRivSOVB6U6S7E8dX6/AHpTuAXtU+h7aung8Hk3T9+/fJzEzMzO5ubknT57U6/X2ctC/w1aig4ODNE37+Phsbm56V7wdMTc3JxaLc3JyXF756tWr5eXlfRDpLWNyclL7O11dXSsrKzh+eHiYHb+2tsZOtbKyolarlUrl6OioTYYjIyPXrl0rKSmZmpqanJxECA0NDZGs9Hq92WwmF6+trbW2tpKz9+/fx9/V4uKi1g6LxYJTWSyWW7duqVSq4eHht2y+fWpqKigoSCwWCwSCly9fkniTySQWiyUSCY/Ha25uZifR6XT+/v5isVihUNi3StPT0z4+PtXV1SSGYZjExESKooRC4eXLl9kXy+Vy0hqUlZWR+MePH/P5fIqiQkJC1Go1O4larebz+RKJRCaT2bwkO63jxsZGRESESCQKDg626dA7quP169dDQ0OxwCkpKSR+bm5OIpGIRCKxWJyYmMhWYEajkcfjSSSSkJCQ8fHxfRbYUVZOmmgP8EBg99lDW5dMJrOJqa+v7+joKC4u1ul0Nqdomnae1etVXQghk8mkUChcXlZZWQn/n3nAwMAARVFpaWlqtbqwsJC80waDgcPhqFQqtVp97do1X1/f4eFhnGR8fNzPz6+hoeHJkyfx8fFXr14luV2+fDkmJqarq6ujo0OhUBw+fBgh1N3dTbK6efMml8t99OgRvt5isVRUVKjV6qNHj6rVao1Gg9+3xsbG2NhYtVotk8mSk5PVarVAIOjr60MILS4u+vr6NjY2GgyGuLg4XMRbA0VR+PfK8fHxiIgIEh8bG4vbWYZheDwe6WGsrq4GBATgm1ZWVsbWN5iIiAi1Wl1UVERiNBoNUT/Z2dkPHz4kpxy1BvX19UQt0TS9uLiIwy9evIiMjMTh7u7ubf8Zdb+Oubm59+7dQwhtbGz4+voSfeOkjpmZmWNjY/ZFPHr0iLSrRUVFd+/eJaeCg4M3NjYQQktLS2FhYfsssKOsnDTRHrBTgXfEHtq67FUXprS09LWoromJiZ6eHrPZzDCMXq/v6ekhp9bX11tbWysrK230N8MwXV1dJSUlAwMDNqprZmamurq6oqKC3ZuYmJj4+eefr1692tPT09PTw/5BjWGYgYGB8vLy2tra9fX1XdblraSwsLCzsxOH19fXyfeckJBAbvLS0pJEIsFhX19f0nghhORy+dOnTxFCT548iYuLY+ecmZlpn9Xm5iZFUTYy2Ly0jY2NeDaCvLR5eXlYdRUWFrJbWyLVW8Dq6ir7ewwMDCSNi0gkIvGpqamDg4M43NDQcOvWLRze2tricrnsDDs7O7OysnQ6HVt1JScnkw9Er9ezex7OWwNSOunEsHO2Wq0CgWA3dQwLCyPhzMzMJ0+euKyjI9XFpq2t7dq1a0RI9rsXGhq6nwI7yQqzbRONEOrv7y8vL3/w4MHGxsbS0pLXBd4Re2jr2pHq+utf/yoSiSiK+vHHH00mk31Wu1dd9fX1IpGorKwsODg4Ly8vMTHRaDQihCYmJvz9/UtLSxsbGyMjI4uLi/H1VqtVIpFcvHixpaUlISEhPj6eqK6hoaFz587dvXu3paWFz+eTTwgXIZVK8/Ly8vLy6urqSOm1tbVZWVlarba6upp0uAA2bNXFMExISAgOs/XNixcvcPdtbGzs/Pnz7OSTk5MxMTEIobNnz87Pz29bBDsro9Eol8ttLrB5aXt7e/F3RV7alpaW2dlZhFBra+vFixc9ruybTH9/P3tuPDo6mnySRUVFly5dslgsXV1d/v7+ZA4qPz8ff00YtvLA47O1tTUb1dXX1ycQCObn5ycnJ/39/aempsipwMBAmqYpihKJRLijwKalpSUnJ+fHH38kMWtra/7+/n19fWazOS4ujj248aCObKVSW1tbWVnpso6ZmZmhoaEURQkEAnvLi8FgKCkpCQgIYDf3kZGR9+7dW11dvXXrls2bvNcCO8kKs20TnZiYmJmZ2draWlxcfPTo0StXrnhd4B2xh7auHakuo9GI9fDY2JhUKrXPyisThpWVlV9++aWNoymRSLSwsEAOf/zxx+fPnyOEysrKKioqSHxGRsa2E4a9vb2//PILuwiXE4a5ubnsMR+AKSwsrKmpmZiYMBqN4eHhtbW1OD4hIeHSpUsFBQUKhUIsFmPd09TUVF5ebpMDn89H//hh2JCQkMDn82ma9vPz++ijj+x7yjt6aTUaTXR0tFwuV6lUxAD2FmAwGJRKJTlMSUkhn8z8/PyRI0eCg4M/++yzO3fukGuys7OHhobIIbu7XVJSgk1cNqrLarWGhYVxOJwTJ07ExMSwO/59fX14YtBisQQHB9vMUtTW1kZHR6emprKTKJXKr776KjAw8Pjx4+4Ym53UkS28TqcrLS11WceJiQncW2IYJjY21kbddnZ2ZmRkCIVCtnm1u7v7z3/+M4/H+8tf/sLOdh8EdpIVxv5tb2xsvH79Ojk0Go2ki+9FgXfEvtq6MI5GowT7uRcvqi48x0pgGMZmdkKn0+FJYYqi2GOj0dFRorrGx8cpiqIoSiKRBAYGZmdns4vYVnXpdDpsYQ4PD//iiy8MBsPuq/OWUVhYSNN0ampqXl4eXliBSUhIaGlp6e7ujo6OJtYRmykmhNDm5iYeqFEUhd+WlZUVmUxG0/S3336LB0/sUdf09HRgYKDN+MyDl9Zqtba1tfn6+u7Peq19oL+/PysrixzGxsaS4YJYLJ6ZmUEIMQwjkUjIY8rPz+/q6iJJyDe1tbXl4+Pz8OFDvV6fn5+fmJhIjFWXL19uaWnB4aKiIo1Gs60wSqVy2wml4uJi0rl58uRJYmIiDg8ODsbGxu6mjuzhVF1dHenTO6qjDUNDQz///LN9/MjIyLlz53B4bW2NWKFWVlYCAgJc2nu8KLCTrDD2b7tCobCfDPO6wDviTbF1sdnWAuEt1WWvV8RiMftQo9Fg9RYbG8u2Yz169IiorqCgIDJQGxoacqm6Xrx4wVaESqUSVJc97AlDNmx9c/78+fb2doTQysoKHmMRamtrVSoVQigrK8smH2KhYWeFEKqrq7NpMd1/aW1mOZKTk9lTXgcai8XC/ijY95n9bVZVVZEp8aampps3b+Lw+vo6ueFbW1ulv5OQkEDTNGm/KIoi7fWrV68c6Zvs7OyBgQH7+LGxMTJhe/36dbLiBjkddrtTRy6XSwTLyMjo7e11XkcbDAZDQUHBtqfIfNLo6GhGRgaJj4yMJAte9kFgJ1lh7N/29PR0l8a83Qu8I94IW1dxcTGZk+3u7raxsaOdqy5Hnua31SvZ2dlE7b98+TIoKAhPUPT19VEUtbW1hRCyWCwcDgerLoZhiFl1bW0tIiKCrbpaWlrIrMjW1hZejmUwGMjy39nZWRh1bYs7qmtjYyMwMBC/DDk5OcQKPT8//8MPP+Ae/fLycmBgIJmdYD8vm2UaPB7P5oN0/6U9cuQIWUC8urrq5+f31oy6EEIikQjfQIPBwLbEyOVy/B+C1WoVi8XY7IcQ2tjY8PPzw8/lypUrNnMbGJsJw19//ZWo/7y8vPr6ehxub28n/YmFhYWAgAD8DZpMptu3b+Mmz2q1xsTEkHm5gYEBMuXIHoF5VkdipTaZTMHBwaSRdVTHV69epaWl4Y7p5uamUCgky0/KysqITlKr1b/++isOb21tBQQE4FMmk8lmVcteC+wkK4z92z42NsbufA8ODm47stylwDtiX21dpaWlNE0HBATgX76INXV5eTkxMTEkJISiqLi4OPsOyE5Vl72n+c3Nzbi4OD6fz+VyaZoODw8nwyar1XrlypXw8HCZTBYREYHnQzBarRZLFRYW9ujRo++//x5PWN2+fRtP/YnF4urqal9fX1KXra2t2NhYqVQqEAjEYvGDBw8QQgzDXLhwQSqVSiSSqKgolUrF5/PdmeB+d9BqtQEBAdgQxe5e3L59m8PhiEQirVaLY3Q6nUQiwXqioKBALBbL5XK5XD43N0dSzc/PR0VFhYaG4j+ESkpKEEIVFRU4K7wEgKKotrY2fL3JZJJKpTRNnzlzhqZpuVxOvlL8aw5+aSMiIsh8l1KpzMzMjIqKkslkQqHw2bNne36P9pHZ2VmxWCwUCqVSKdt0ZDKZ8C0NDQ21ad06Ozt5PJ5AIMjMzLRvjEpLS3k8XlBQEOk6MAyTkZGB12KwhykMw6hUKh6PR1GUWCzGhmccf+PGjZCQELFYHBYWRt4HTE1NDf6zKi4ubnV1dTd13NzcjI+PFwqFXC6XrMByXkedThcSEiIUCkNCQti3pa2tTSAQhIWFURSVm5vLTtLf3y8QCGiaZtdx3wR2lJWjJhoh1NHRIRQKZTKZVCpNSkpyZ/7QA4HdZw9tXTRNm81m3GPyGIZhzGYzsV4AAAAAwB7aunJychQKBenYesbw8LBCoVAoFLtUgQAAAMBbA/gwBAAAAA4YsF8XAAAAcMB4Pft17cNarLdpuRcAAADAxrWty2QyEXfanq1iZOPIl7AX8XoR9fX1X331lc0P5wAAAMDrwrWta2ZmRq1Wi0Si48ePs//78wxHvoS9iHeLWF9f53K5SUlJbF+6AAAAwGvEXVuXWCxeWFggOwt4hkuPxbvH60VkZ2e3t7enpKSA6gIAAHhDcMvWNT09HR8fjxCSSCRu/u63LS49Fu8e7xYxOzuLfbeA6gIAAHhzcOu/rqysrP7+foRQc3OzZ15+MS49Fu8e7xYRGRmJHdOB6gIAAHhzcG3rYhjm8OHDCQkJeM+qY8eOeVyYS4/Fu8eLRfT29gYHB+v1er1eLxQKGxoavCQjAAAAsCtc27oeP3586dKll7+jUCjc9Lhlj0uPxbvHi0W8ePGCOL3mcDjs7WoAAACA14hrW1d0dDR7J8aRkZELFy54XJ5zj8VeYS+KgAlDAACANwcXtq7KyspTp07RNI33lBsYGKBp+tSpUy43AnaEI1/CXsTrRSQnJ3M4nLNnz+4+KwAAAGD3gA9DAAAA4IABPgwBAACAA8br8WEIAAAAAB6zh/t1AQAAAMBeALYuAAAA4IABti4AAADggAG2LgAAAOCAAbYuAAAA4IABti4AAADggAG2LgAAAOCAAbYuAAAA4IABti4AAADggOGuraukpOTjjz+297q7vr5++PDhEydOuJ+kr6/vk08+SU1NtU8ik8kOHTpkvzmko6wAAACAdxB3bV0qler999+3v2Ztbe3QoUOff/65+0mMRuMHH3ywrSN2Pp//4Ycf2m8v4igrAAAA4B0EbF0AAADAAQNsXQAAAMABA/7rAgAAAA4Y8F8XAAAAcMB4DbYuq9XKMIyjU/sjAwAALnH0PTr5Tr34CXuQlReTvN7SPUjiwUPZn/Z2j0rfQ1sXj8ejafr+/fskZmlpiaIoiqIEAsG1a9dI/ObmZlJSUlhYmEQiEQgEJpOJnBocHKRp2sfHZ3Nz04uyxcfHi8Vil5cxDAOrV/aHyclJ7e90dXWtrKzg+K6uLhLf29tr0+lZWVlRq9VKpXJ0dNQmw5GRkWvXrpWUlExNTU1OTiKEhoaGSFZ6vd5sNpOL19bWWltbydn79+/j72p0dFT7j7S1tZFUFovl1q1bKpVqeHj4LXtPpqamgoKCxGKxQCB4+fIliTeZTGKxWCKR8Hi85uZmdhKdTufv7y8WixUKhX2rVF9f/9VXX9n/97Kj0nt7e5OTk//2t7/ZJ3Fe+o5K2djYiIiIEIlEwcHBbDPKyspKeXl5aGjo5cuX3cxqZmYmNzf35MmTer3ezSReFBg5vi0eCIzxynN0IrD77KGtSyaT2cRERUWNjY3hcEZGRnt7Ow5PT0+T8NjYmP26eZlM5l3VhRCiadrlNSaTSaFQeLdcYFsGBgYoikpLS1Or1YWFheSdvnfvno+Pj1qtLi8vv3TpEo/HW1tbw0nGx8f9/PwaGhqePHkSHx9/9epVktvly5djYmK6uro6OjoUCsXhw4cRQt3d3RwOR6VSqdXqmzdvcrncR48e4estFktFRYVarT569KhardZoNPh9UygUN2/eVKvVWAa1Wn3mzBmcZHFx0dfXt7Gx0WAwxMXF4SLeGiiKws3T+Ph4REQEiY+NjR0fH0cIMQzD4/FID2N1dTUgIADftLKysrKyMnZu6+vrXC43KSnJ/r+XHZVeVFQ0MjJi/+U6L32npeTm5t67dw8htLGx4evrS3pLRqOxtrZ2fHw8JSXFzazq6+s7OjqKi4t1Op2bSbwosJPb4oHAyHvP0ZHAO2IPbV32qmtoaIiEjUbjlStX7FOtra1RFGWflVdU1/j4eGlpaVtbG8Mw7A9gZmamurq6oqKC3TVYXFxsa2sTCAQ9PT09PT39/f3srLZNAuyGwsLCzs5OHF5fXw8LC8Nh9pPS6XRKpRKHfX19FxcXySm5XP706VOE0JMnT+Li4tg5Z2Zm4kBCQgJ5Xpubm9u+aexDhUKBB2dEBnJBYWHhw4cPyZUSiWRntX2DWV1dZd/zwMBA0riIRCISn5qaOjg4iMMNDQ23bt3C4a2tLS6Xy84wOzu7vb09JSWF3eQxDDMwMFBeXl5bW7u+vu5O6Rh71eW89J3WMSwsjIQzMzOfPHnCTjg9PW2julwKXFpaaqMJXCbxisCObosHAmO2fY5eFHhH7KGty1512ZwdGRlhx4yPj9+5c4fL5RqNRvuLd6+6rl69KpfLm5qaCgoKhEKhQCDA8UNDQ+fOnbt7925LSwufzx8eHsbxRqPx4sWL33zzTV5eXl5enkqlIrfbURJgN7BVF8MwISEhOMz+AGpqaoqKihBCY2Nj58+fZyefnJyMiYlBCJ09e3Z+fn7bItiqy2g0yuVymwtsXlqNRrOxscGWgXRdW1tbL168uNM6Hgj6+/tzcnLIYXR0NJnDLyoqunTpksVi6erq8vf3J3NQ+fn57M+WfFwIodnZWalUihCyafJqa2uzsrK0Wm11dXVwcDC+z85Lx9irLiele1BHdoemtra2srKSndBedbkU2F4TuEziFYEd3RYPBEaOn6MXBd4Re2jrcqK60tPTb9++bRM5Pj6uVCqDgoL6+vrss9ql6pqYmGC3Ux0dHdvO8PT29v7yyy/k0J0JQ5skgMcUFhbW1NRMTEwYjcbw8PDa2loc7+/vr1Qqc3NzIyIi4uPjt7a2EEJNTU3l5eU2OfD5fPSPH4YNCQkJfD6fpmk/P7+PPvqITF8THL20204vazSa6OhouVyuUqksFovbFX3TMRgMZGiLEEpJSSG2jfn5+SNHjgQHB3/22Wd37twh12RnZ7PnVNi3KzIycmpqCjlt8nJzc3t6elyWbp+5y9I9qKPNKL+0tJSd0F51uRTYXhO4TOIVgR3dFg8ERu49x10KvCP21daFEGIYJiEhQaPROEq1urqKGyCbrHapuoqLi7VaLTsmICAAB8bHx/HiEYlEEhgYmJ2dTa5xpLqcJAE8prCwkKbp1NTUvLw8vLACw+fzDQbDw4cPeTzes2fPcKRer2cbtxBCm5ubeKBGURR+W1ZWVmQyGU3T3377LZ6UYI+6pqenAwMDbcZnO1JdGKvV2tbW5uvr+9asj+3v78/KyiKHsbGxS0tLOCwWi2dmZhBCDMNIJBLymPLz87u6ukgScrt6e3uDg4P1er1erxcKhQ0NDeQanU7H5/MpigoPD//iiy8MBoPL0m0yJzgq3bM6sgdtdXV1NpaUbUddzgXedtTlPIlXBHZ0WzwQ2Mlz9KLAO2JfbV1WqzUyMtJlQXhYapPVLlVXXV1dRUUFOdzc3Dx69CgOBwUFLSws4PDQ0JA7qstJEsBj2BOGbMgnt7GxERgYiKcdVlZWbLo4tbW1KpUKIZSVlWWTD7HQsFUXQqiurs6mF+W+6rKZ5UhOTsZ90rcAi8XCXn/Lvs/sEW1VVVVdXR0ONzU13bx5E4fX19fJDX/x4kXp73A4nOvXr5N4iqLIJKFSqSSqy0npGPtn4ah0z+rI5XKJaSAjI6O3t5ed0F51uRTYXhO4TOIVgR3dFg8EdvQcvSvwjtg/W9fW1pZEImltbcWHa2trZIqgvr6elD4wMBAZGWmf1Y5Ul72n+fX19R9++AFb9fHI75tvvsHh0NBQIlJERARbD9msGcHzS86TAB7jUnUhhEZHR6Ojo3E4JyeHWKHn5+d/+OEHvPhweXk5MDCQzE6wn5fNMg0ej2czZ+i+6jpy5AhZQLy6uurn5/fWjLoQQiKRCN9Ag8HAtinK5XL8H4LVahWLxbOzszh+Y2PDz88Pf6RXrlzB68dsYE80GQwGssR8dnaWPepyUjrG/lm4U7r7dczLy8Mq2WQyBQcH2yxhsFddLgXedv7NeRKvCOzktnggMMHNCUMPBN4R+2frMplMZ86coX9HKBQWFxfjU3jpZGhoqEQiiYuLW15ets9qR6prW0/z4+PjIpGIoqjQ0NCqqqrw8HC88crt27fxrIVYLK6urvb19b179y47K4qiRCKRUCgsLCzEkc6TAB6g1WoDAgKwIYrd50hPTz99+jRN02RuKjc3Nz8/H4cLCgrEYrFcLpfL5XNzcyTV/Px8VFRUaGioXC6nabqkpAQhVFFRweFwRCIRTdN4vpf8pGUymaRSKU3T+BWVy+VkQKDX62maxjKw+yhKpTIzMzMqKkomkwmFQjKT+XYwOzsrFouFQqFUKmV/jyaTCd/S0NBQm9ats7OTx+MJBILMzEz7xig5OZnD4ZD/XhiGuXDhglQqlUgkUVFRKpWKz+cTw4yj0pOTk8mzoGmabchxXvqO6ri5uRkfHy8UCrlcLnsFVldXF264OBwOTdPsNQiOsiotLaVpOiAgAP/kym4lHCXxosBObosHAmNsnqPXBXafPbR10TRtNpuxUd1jGIYxm83EegEAAAAAe2jrysnJUSgUbO8DHjA8PKxQKBQKxS5VIAAAAPDWAPt1AQAAAAcM2K8LAAAAOGDAfl0AAADAAQP26wIAAAAOGGDrAgAAAA4YYOsCAAAADhhg6wIAAAAOGMeOHXvvf//3f0+cOFFfX///AAAAAOCNJyMj473fAAAAAOBA8f8Bk8e33qYcZiUAAAAASUVORK5CYII=" alt="" />
aaarticlea/png;base64,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" alt="" />
它在文件中的地址是0x538~0x554,我们用hexdump命令看这个段的内容:
aaarticlea/png;base64,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" alt="" />
其中0x540地址处的0a 00 00 00 就是变量A,我们还看到程序中的字符串字面值"Hello world %d\n"分配在.rodata段的末尾,字符串的字面值是只读的,相当于在全局作用域定义了一个const数组:
aaarticlea/png;base64,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" alt="" />
程序加载运行时,.rodata段和.text段通常合并到一个Segment中,操作系统将这个Segment只读保护起来,防止意外改写。这一点从readelf的输出也可以看出来:
aaarticlea/png;base64,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" alt="" />
注意,像A这种const变量在定义时必须初始化。因为只有初始化才有机会给它一个值,一旦定义之后就不能再改写了,即不能再赋值。
从上面readelf的输出可以看到.data段从地址0x804a010开始,长度是0x14,也就是到地址0x804a024结束。在.data段中有三个变量,a,b和a.1589。
a是一个GLOBAL符号,而b被static关键字修饰了,导致它成为一个LOCAL的符号,所以static在这里的作用是声明b这个符号为LOCAL的,不被链接器处理,如果把多个目标文件链接在一起,LOCAL的符号只能在某一个目标文件中定义和使用,而不能定义在一个目标文件中却在另一个目标文件中使用。一个函数定义前面也可以用static修饰,表示这个函数名符号是LOCAL的。
还有一个a.1589是什么呢?它是main函数中的static int a。函数中的static变量不同于局部变量,它并不是在调用函数时分配在函数返回时释放,而是像全局变量一样静态分配,所以用"static"这个词。另一方面,函数中的static变量的作用域和局部变量一样只在函数中起作用,比如main函数中的a这个变量名只在main函数中起作用,所以编译器给它的符号加了一个后缀以便和全局变量a以及其他函数的变量a区分开。
.bss段从地址0x804a024开始,长度为0xc,也就是到地址0x804a030结束。变量c位于这个段。从上面的readelf输出可以看到.data和.bss在加载时合并到一个Segment中,这个Segment是可读写的。.bss段和.data段的不同之处在于.bss段在文件中不占存储空间,在加载时这个段用0填充。所以全局变量如果不初始化则初值为0,也分配在.bss段。
现在还剩下函数中的b和c这两个变量没有分析。函数的参数和局部变量是分配在栈上的,b是数组也一样,也是分配在栈上的,我们看main函数的反汇编代码:
aaarticlea/png;base64,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" alt="" />
可见,给b初始化用的这个字符串"Hello world"并没有分配在.rodata段,而是直接写在指令里了,通过三条movl指令把12个字节写到栈上,这就是b的存储空间,如下图所示:
aaarticlea/png;base64,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" alt="" />
虽然栈是从高地址向低地址增长的,但数组总是从低地址向高地址排列的,按从低地址到高地址的顺序依次是b[0]、b[1]、b[2]......
数组元素b[n]的地址 = 数组的基地址(b做右值就表示这个基地址) + n x 每个元素的字节数,当n=0时,元素b[0]就是数组的基地址,因此数组下标要从0开始而不是从1开始。变量c并没有在栈上分配存储空间,而是直接存在eax寄存器里,后面调用printf也是直接从eax寄存器里取出c的值当参数压栈,这就是register关键字的作用,指示编译器尽可能分配一个寄存器来存储这个变量。调用printf时对于"Hello world %d\n"这个参数压栈的是它在.rodata段中的首地址,而不是把整个字符串压栈。所以字符串在使用时可以看做数组名,如果做右值则表示数组首元素的地址。
我们用全局变量和局部变量这两个概念主要是从作用域上区分的,现在看来用着两个概念给变量区分太笼统了,需要进一步细分。我们总计一下相关的C语法:
作用域这个概念使用于所有标识符,而不仅仅是变量,C语言的作用域分为一下几类:
- 函数作用域,标识符在整个函数中都有效。只有语句标号属于函数作用域。标号在函数中不需要先声明后使用,在前面用一个goto语句也可以跳转到后面的某个标号,但仅限于同一个函数之中。
- 文件作用域, 标识符从它声明的位置开始知道这个程序文件的末尾都有效。例如上例中main函数外面的A、a、b、c还有main也算,printf其实是在stdio.h中声明的被包含到这个程序文件中了,所以也算文件作用域的。
- 块作用域, 标识符位于一对{}括号中(函数体或语句块),从它声明的位置开始到右}括号之间有效。例如上例中main函数里的a、b、c,此外,函数定义中的形参也算块作用域的,从声明的位置开始到函数末尾之间有效。
- 函数原型作用域, 标识符出现在函数原型中,这个函数原型只是一个声明而不是定义(没有函数体),那么标识符从声明的位置开始到在这个原型末尾之间有效。例如int foo(int a, int b);中的a和b。
对属于同一命名空间的重名标识符,内层作用域会覆盖外层作用域的标识符。命名空间可分为以下几类:
- 语句标号单独属于一个命名空间。例如在函数中局部变量和语句标号可以重名,互不影响。由于使用标号的语法和使用其它标识符的语法都不一样,编译器不会把它和别的标识符弄混。
- struct, enum和union的类型Tag属于一个命名空间。由于Tag前面总是带struct, enum, union关键字,所以编译器不会把它和别的标识符弄混。
- strcut和union的成员名属于一个命名空间。由于成员名总是通过.或->运算符来访问而不会单独使用,所以编译器不会把ta和别的标识符弄混。
- 所有其他标识符,例如变量名、函数名、宏定义、typedef的类型名、enum成员等等都属于同一个命名空间,如果有重名的话,宏定义覆盖所有其他标识符,因为它在预处理阶段而不是编译阶段处理,除了宏定义之外其它几类标识符按上面所说的规则处理,内层作用域覆盖外层作用域。
标识符的链接属性有三种:
- 外部链接(External Linkage), 如果最终的可执行文件由多个程序文件链接而成,一个标识符在任意程序文件中即使声明多次也都代表同一个变量或函数,则这个标识符具有External Linkage。具有External的标识符编译后在符号表中是GLOBAL的符号。例如上例中main函数外面的a和c,main和printf也算。
- 内部链接(Internal Linkage),如果一个标识符在某个程序文件中即使声明多次也都代表同一个变量或函数,则这个标识符具有Internal Linkage。例如上例中main函数外面的b。具有Internal Linkage的标识符编译后在符号表中是LOCAL的符号,但main函数里面那个b不能算Internal Linkage,因为即使在同一个程序文件中,在不同的函数中声明多次,也不代表同一个变量。
- 无链接(No Linkage) 。除以上情况之外的标识符都属于No Linkage的,例如函数的局部变量以及不表示变量和函数的其他标识符。
存储类修饰符(Storage Class Specifier)有以下几种关键字,可以修饰变量或函数声明:
- static ,用它修饰的变量的存储空间是静态分配的,用它修饰的文件作用域的变量或函数具有Internal Linkage。
- auto ,用它修饰的变量在函数调用时自动在栈上分配存储空间,函数返回时自动释放,例如上例中 main 函数里的 b 其实就是用 auto 修饰的,只不过 auto 可以省略不写, auto 不能修饰文件作用域的变量。
- register ,编译器对于用 register 修饰的变量会尽可能分配一个专门的寄存器来存储,但如果实在分配不开寄存器,编译器就把它当 auto 变量处理了, register 不能修饰文件作用域的变量。现在一般编译器的优化都做得很好了,它自己会想办法有效地利用CPU的寄存器,所以现在 register 关键字也用得比较少了。
- extern ,上面讲过,链接属性是根据一个标识符多次声明时是不是代表同一个变量或函数来分类的, extern 关键字就用于多次声明同一个标识符,下一章再详细介绍它的用法。
- typedef ,它并不是用来修饰变量的,而是定义一个类型名。typedef 在语法结构中出现的位置和是面几个关键字一样,也是修饰变量定义的,所以从语法(而不是语义)的角度把它和前面几个关键字归类到一起。
上面介绍的 const 关键字不是一个Storage Class Specifier,虽然看起来它也修饰一个变量声明,但是在以后介绍的更复杂的声明中 const 在语法结构中允许出现的位置和Storage Class Specifier是不完全相同的。 const 和以后要介绍的 restrict 和 volatile 关键字属于同一类语法元素,称为类型限定符(Type Qualifier)。
变量的生存期(Storage Duration,或者Lifetime)分为以下几类:
- 静态生存期(Static Storage Duration),具有外部或内部链接属性,或者被 static 修饰的变量,在程序开始执行时分配和初始化一次,此后便一直存在直到程序结束。这种变量通常位于 .rodata , .data 或 .bss 段,例如上例中 main 函数外的 A , a , b , c ,以及 main 函数里的 a 。
- 自动生存期(Automatic Storage Duration),链接属性为无链接并且没有被 static 修饰的变量,这种变量在进入块作用域时在栈上或寄存器中分配,在退出块作用域时释放。例如上例中 main 函数里的 b 和 c 。
- 动态分配生存期(Allocated Storage Duration),以后会讲到调用 malloc 函数在进程的堆空间中分配内存,调用 free 函数可以释放这种存储空间。
[汇编与C语言关系]3. 变量的存储布局的更多相关文章
- [汇编与C语言关系]2. main函数与启动例程
为什么汇编程序的入口是_start,而C程序的入口是main函数呢?以下就来解释这个问题 在<x86汇编程序基础(AT&T语法)>一文中我们汇编和链接的步骤是: $ as hell ...
- [汇编与C语言关系]4. 结构体和联合体
用反汇编的方法研究一下C语言的结构体: #include <stdio.h> int main(int argc, char ** argv) { struct { char a; sho ...
- [汇编与C语言关系]5. volatile限定符
现在研究一下编译器优化会对生成的指令产生什么影响,在此基础上介绍C语言的volatile限定符.首先看下面的C程序: /* artificial device registers */ unsigne ...
- [汇编与C语言关系]1.函数调用
对于以下程序: int bar(int c, int d) { int e = c + d; return e; } int foo(int a, int b) { return bar(a, b); ...
- C语言变量的存储布局
分析以下代码中变量存储空间如何分配: //MemSeg.c: 代码无意义,仅供分析用 #include <stdio.h> #include <stdlib.h> //mall ...
- 从汇编来看c语言之变量
1.基础研究 对如图程序进行编译连接,再用debug加载. 我们在偏移地址1fa处查看main函数的内容: 执行到1fd处,发现n的偏移地址为01a6,段地址存储在ds寄存器里,为07c4. 再查看函 ...
- C语言的本质(32)——C语言与汇编之C语言内联汇编
用C写程序比直接用汇编写程序更简洁,可读性更好,但效率可能不如汇编程序,因为C程序毕竟要经由编译器生成汇编代码,尽管现代编译器的优化已经做得很好了,但还是不如手写的汇编代码.另外,有些平台相关的指令必 ...
- 从汇编看c++中指向成员变量的指针(一)
在c++中,指向类成员变量的指针存储的并不是该成员变量所在内存的地址,而仅仅是该成员变量在该类对象中相对于对象首地址的偏移量.因此,它必须绑定到某一个对象或者对象指针上面,这里的对象和对象指针,就相当 ...
- C语言中不同变量的访问方式
C语言中的变量大致可以分为全局变量,局部变量,堆变量和静态局部变量,这些不同的变量存储在不同的位置,有不同的生命周期.一般程序将内存分为数据段.代码段.栈段.堆段,这几类变量存储在不同的段中,造成了它 ...
随机推荐
- 【Redis】:Jedis 使用
Redis 支持很多语言, 例如C#,RUBY,JAVA 等, Jedis是redis的java版本的客户端实现 一个简单的Jedis使用 依赖第三方包jedis-2.7.2.jar commons- ...
- asp.net,cookie,写cookie,取cookie
Cookie是一段文本信息,在客户端存储 Cookie 是 ASP.NET 的会话状态将请求与会话关联的方法之一.Cookie 也可以直接用于在请求之间保持数据,但数据随后将存储在客户端并随每个请求一 ...
- 基础1.初次接触Jquery
1.浅理解Jquery:jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理HTML documents.events.实现动画效果,并且方便地为网站提供AJAX交互. 2.D ...
- 【转贴】Python处理海量数据的实战研究
最近看了July的一些关于Java处理海量数据的问题研究,深有感触,链接:http://blog.csdn.net/v_july_v/article/details/6685962 感谢July ^_ ...
- Java学习【1】
一.Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称. 2005年6月,SUN公司公开Java SE 6.Java ...
- jq仿淘宝放大镜插件
html部分 //小图 <div id="photoBox"> <img src="图片路径" width="400" h ...
- mysql自动加入添加时间列
`addtime` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- js中的时间与毫秒数互相转换
1.js毫秒时间转换成日期时间 var oldTime = (new Date("2012/12/25 20:11:11")).getTime(); //得到毫秒数 //不 ...
- Python 比较两个字符串大小
python 2中,有cmp(a,b)函数,用于比较两个字符串的大小. 如 >>>a='abc' >>>b='abd' >>>print cmp( ...
- Linux 安装PHP PECL 百分百成功
1. 下载 需要安装的组件 http://pecl.php.net/packages.php 2. 解压 tar zxf 你的扩展包路径 3. 进入你解压的扩展包路径后 访问 /usr/bin ...