精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

玩一玩 Ubuntu 下的 VSCode 編程

系統 Windows
在x86下能不能混著用寄存器呢?就比如 windows 上的 fastcall 調用協定,其實是可以的,就是在 mytest 方法上加 __attribute__((regparm(N))) 標記,這里的 N 不能超過 3 ,即參與傳遞的寄存器個數。

一:背景

1. 講故事

今天是五一的最后一天,想著長期都在 Windows 平臺上做開發,準備今天換到 Ubuntu 系統上體驗下,主要是想學習下 AT&T 風格的匯編,這里 Visual Studio 肯定是裝不了了,還得上 VSCode,剛好前幾天買了一個小工控機,這里簡單記錄下 零到一 的過程吧。

二:搭建一覽

1. VSCode 安裝

在 Ubuntu 上也有類似 Windows 的微軟商店的 軟件市場,可以在商店中直接安裝。

圖片

既然要換體驗,那就多用命令的方式安裝吧。

sudo apt update

sudo apt install software-properties-common apt-transport-https wget

wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add -

sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main"

sudo apt install code

code

2. gcc 安裝

由于 ubuntu 自帶了 gcc,g++,gdb 所以這一塊大家不需要操心,可以用 -v 觀察各自的版本。

skyfly@skyfly-virtual-machine:~/Desktop$ g++ -v
nux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) 

skyfly@skyfly-virtual-machine:~/Desktop$ gdb -v
GNU gdb (Ubuntu 9.2-0ubuntu1~20.04.1) 9.2

3. 配置 vscode

為了能夠讓 vscode 跑 C++ 程序,先配置下 launch.json 文件。

// An highlighted block
{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/${fileBasenameNoExtension}.out",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "preLaunchTask": "build",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

再配置下 tasks.json 文件。

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "g++",
            "args": [
                "-g",
                "${file}",
                "-std=c++11",
                "-o",
                "${fileBasenameNoExtension}.out"
            ]
        }
    ]
}

然后在 VSCode 面板中安裝下 GDB Debug 和 C/C++ Extension Pack 兩個插件,其他都是附帶上去的,截圖如下:

圖片

3. 一個簡單的程序測試

為了方便體驗 AT&T 風格,寫一個多參數的方法,順帶觀察寄存器傳值。

#include <iostream>

using namespace std;

int mytest(int a, int b, int c, int d, int e, int f, int g)
{
    printf("a=%d,b=%d,c=%d,d=%d,e=%d,f=%d,g=%d", a, b, c, d, e, f, g);

    return 0;
}

int main()
{
    int a = 10;
    int b = 11;
    int c = 12;
    int d = 13;
    int e = 14;
    int f = 15;
    int g = 16;

    mytest(a,b,c,d,e,f,g);
}

在 mytest 方法下一個斷點,然后在 DEBUG CONSOLE 窗口輸入 -exec disassemble /m 就能看到本方法的匯編代碼,截圖如下:

圖片

仔細觀察上圖,可以看到 mytest 方法的前六個參數依次使用了 edi, esi, edx, ecx, r8d, r9d 寄存器,雖然都是 X64 調用協定,和 Windows 平臺的4個寄存器有明顯不同哈。

既然都看了默認的x64,不看 x86 的傳遞就有點遺憾哈,要想編譯成 32bit 的,需要做一些簡單配置。

$ sudo apt-get install build-essential module-assistant  
$ sudo apt-get install gcc-multilib g++-multilib

然后在 g++ 編譯時增加 -m32 參數,在 tasks.json 中增加即可。

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "g++",
            "args": [
                "-g",
                "-m32",
                "${file}",
                "-std=c++11",
                "-o",
                "${fileBasenameNoExtension}.out"
            ]
        }
    ]
}

接下來觀察下匯編代碼,可以發現走的都是 棧空間。

24     mytest(a,b,c,d,e,f,g);
=> 0x565562a2 <+80>: sub    $0x4,%esp
   0x565562a5 <+83>: pushl  -0xc(%ebp)
   0x565562a8 <+86>: pushl  -0x10(%ebp)
   0x565562ab <+89>: pushl  -0x14(%ebp)
   0x565562ae <+92>: pushl  -0x18(%ebp)
   0x565562b1 <+95>: pushl  -0x1c(%ebp)
   0x565562b4 <+98>: pushl  -0x20(%ebp)
   0x565562b7 <+101>: pushl  -0x24(%ebp)
   0x565562ba <+104>: call   0x5655620d <mytest(int, int, int, int, int, int, int)>
   0x565562bf <+109>: add    $0x20,%esp

還有一個問題,在x86下能不能混著用寄存器呢?就比如 windows 上的 fastcall 調用協定,其實是可以的,就是在 mytest 方法上加 __attribute__((regparm(N))) 標記,這里的 N 不能超過 3 ,即參與傳遞的寄存器個數,修改后如下:

__attribute__((regparm(3)))
int mytest(int a, int b, int c, int d, int e, int f, int g)
{
    printf("a=%d,b=%d,c=%d,d=%d,e=%d,f=%d,g=%d", a, b, c, d, e, f, g);

    return 0;
}

然后把程序跑起來再次觀察,很明顯的看到這次用了 eax, edx, ecx 來傳遞方法的前三個參數,匯編代碼如下:

24     mytest(a,b,c,d,e,f,g);
=> 0x565562aa <+80>: mov    -0x1c(%ebp),%ecx
   0x565562ad <+83>: mov    -0x20(%ebp),%edx
   0x565562b0 <+86>: mov    -0x24(%ebp),%eax
   0x565562b3 <+89>: pushl  -0xc(%ebp)
   0x565562b6 <+92>: pushl  -0x10(%ebp)
   0x565562b9 <+95>: pushl  -0x14(%ebp)
   0x565562bc <+98>: pushl  -0x18(%ebp)
   0x565562bf <+101>: call   0x5655620d <mytest(int, int, int, int, int, int, int)>
   0x565562c4 <+106>: add    $0x10,%esp

三:總結

習慣了 Intel 風格的匯編,再看 AT&T 風格的會極度不舒服,簡直是逆天哈,感覺都是反方向的,相信熟悉一段時間之后就好了,本篇的一個簡單搭建,希望對你有幫助。

責任編輯:武曉燕 來源: 一線碼農聊技術
相關推薦

2022-07-01 16:55:17

調試板子手勢操作

2011-08-31 14:41:37

憤怒的小鳥小游戲android游戲

2009-04-21 10:19:24

Oracle智慧的地球IBM

2023-02-14 16:35:52

UbuntuDOSBox老游戲

2023-03-12 13:23:27

UbuntuDOSBox復古游戲

2012-05-17 16:16:01

Linux系統游戲

2017-03-15 15:52:22

學習編程教學

2013-06-20 09:44:06

程序員

2011-08-08 09:32:32

Ubuntu TweaLinux

2020-11-16 13:38:31

PostMessage

2025-08-13 01:11:00

2025-09-16 09:00:00

2022-02-18 11:05:25

Jpa配置Address

2021-02-22 07:58:51

分布式鏈路追蹤

2022-10-08 11:40:18

Receive阻塞Trigger

2021-09-05 07:55:37

前端Emoji 表情

2021-07-28 06:10:47

拖拽設計器 transmat

2022-10-31 08:47:21

人臉識別按鍵鍵盤

2021-01-04 14:16:01

小程序地圖騰訊

2015-08-31 15:08:08

智慧教育展
點贊
收藏

51CTO技術棧公眾號

欧美色另类天堂2015| 久久久久久久久亚洲精品| 69久久精品| 日本在线不卡视频| 久久亚洲精品一区| 成人在线电影网站| 久久uomeier| 中文字幕国产精品一区二区| 91亚洲国产精品| 国产尤物在线视频| 日本电影一区二区| 亚洲第一页在线| 五月婷婷之婷婷| 无遮挡爽大片在线观看视频| 中文字幕一区二区在线播放| 精品在线视频一区二区| 一区二区三区免费在线| 亚洲日产国产精品| 深夜精品寂寞黄网站在线观看| 97精品人人妻人人| 亚洲一区av| 色国产精品一区在线观看| 狠狠干视频网站| а天堂8中文最新版在线官网| 国产成人午夜精品影院观看视频 | 欧美伦理免费在线| 中国av一区二区三区| 国产一区二区自拍| 国产高清免费av| 免费日本视频一区| 茄子视频成人在线| 精品亚洲永久免费| 欧美成人tv| 久久精品视频va| 久久日免费视频| 伊人久久大香线蕉无限次| 日韩欧美中文一区二区| 精品欧美国产一区二区三区| 国产精品福利观看| 国产无遮无挡120秒| 亚洲色图网站| 日韩在线观看你懂的| 一区二区黄色片| 偷拍亚洲色图| 日韩精品在线免费观看视频| 尤物网站在线观看| 哺乳一区二区三区中文视频 | 亚洲三级精品| 亚洲国产欧美精品| 中文字幕三级电影| 精品久久ai电影| 亚洲精品电影在线观看| a天堂视频在线观看| 51精品国产| 精品国产青草久久久久福利| 无码人妻精品一区二区三区99不卡| 国产在线一区不卡| 欧美一区二区三区播放老司机| 中文字幕成人在线视频| 欧洲精品久久久久毛片完整版| 成人黄色一级视频| 黄色在线观看视频网站| 国产精品免费人成网站| 色999日韩自偷自拍美女| 四虎精品在线| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 一区二区视频免费在线观看| youjizz.com亚洲| 精品美女在线观看视频在线观看| 亚洲欧洲精品成人久久奇米网| 性欧美videosex高清少妇| av一区在线观看| 国产精品久久久久久久浪潮网站 | 国产日韩精品在线| 国产精品久久免费| 国产精选一区二区三区| 国产精品一区二区三区在线观| 天天射天天操天天干| 91在线观看视频| 色婷婷精品国产一区二区三区| www.亚洲.com| 亚洲精品成人精品456| av在线观看地址| 电影网一区二区| 欧美另类高清zo欧美| www.黄色网| 亚洲资源网站| 精品国产一区二区三区四区在线观看 | 外国成人免费视频| 亚州av一区二区| 在线不卡免费视频| 国产999精品久久久久久绿帽| 久久精品丝袜高跟鞋| eeuss影院www在线观看| 亚洲一二三四区不卡| 国产精品97在线| 国产精品毛片无码| 亚洲精品一二区| 青青草国产在线观看| 另类av一区二区| 91在线在线观看| 国产精品99999| 一区二区三区**美女毛片| 无码人妻精品一区二区三区在线| 久久91视频| 91九色最新地址| 国产乱码精品一区二区三区卡| 手机看片1024国产| 国产欧美日韩视频一区二区 | 色综合色综合| 国产做受高潮69| 99精品视频网| 日韩激情第一页| 国产三级精品三级观看| 日韩视频精品在线观看| 91精品美女在线| 美女欧美视频在线观看免费 | 国产专区综合网| 欧美精品一区二区三区久久| 宅男在线观看免费高清网站| 欧美专区亚洲专区| 无码一区二区精品| 综合日韩在线| 国产一区红桃视频| 成年在线电影| 色婷婷av一区二区三区大白胸| 中国特级黄色片| 中文字幕一区二区av| 国产精品入口免费视| 老牛影视av牛牛影视av| 亚洲精品ww久久久久久p站| 伊人影院综合在线| 日韩毛片视频| 国产日本欧美一区| porn视频在线观看| 欧洲国内综合视频| jizz中文字幕| 久久久亚洲人| 久久久99爱| 欧美aa一级| 亚洲精品国产精品国自产观看浪潮| 美女毛片在线观看| 岛国精品在线播放| 国产精品国产三级国产专区51| 久久99成人| 欧美理论电影在线观看| 国产婷婷一区二区三区久久| ...中文天堂在线一区| 午夜精品久久久久久久99热影院| 成人羞羞视频在线看网址| 国产精品∨欧美精品v日韩精品| 偷拍自拍在线| 色婷婷av一区二区三区之一色屋| 国产精品毛片一区二区| 日韩高清一区在线| 亚洲欧美国产不卡| 亚洲视频自拍| 欧美成人午夜激情| 精品女同一区二区三区| 亚洲在线中文字幕| 国产精品久久AV无码| 欧美一级播放| 欧美精品一区在线发布| 忘忧草在线www成人影院| 中文字幕精品一区久久久久| 97精品人妻一区二区三区| 中文字幕在线观看不卡| 亚洲精品无码久久久久久久| 黄色免费成人| 欧美一区二区三区四区五区六区| 69堂精品视频在线播放| 久久精品视频导航| 色哟哟中文字幕| 91激情五月电影| 中文字幕求饶的少妇| 国产成人精品亚洲日本在线桃色| 免费一级特黄特色毛片久久看| 免费黄色成人| 91在线免费视频| 2019中文字幕在线电影免费 | 影音先锋亚洲精品| 欧美凹凸一区二区三区视频| 91九色综合| 欧美激情中文网| 国产精品四虎| 精品欧美乱码久久久久久1区2区| 青草视频在线观看免费| 国产精品国产精品国产专区不片| 绯色av蜜臀vs少妇| 久久午夜av| 国产资源第一页| 曰本一区二区三区视频| 亚洲一区亚洲二区| 超碰超碰人人人人精品| 久久亚洲精品一区二区| 三级毛片在线免费看| 欧美二区三区的天堂| 成年人午夜视频| 亚洲欧美在线另类| 在线免费观看成年人视频| 韩日欧美一区二区三区| 欧美日韩第二页| 黄色亚洲大片免费在线观看| 亚洲免费久久| 九九综合九九| 国产chinese精品一区二区| 日韩制服一区| 欧美亚洲另类视频| 成人影音在线| 久久艳片www.17c.com | 欧美激情亚洲激情| 在线免费黄色| 精品亚洲一区二区三区| 午夜久久久久久噜噜噜噜| 欧美日韩亚洲综合一区二区三区 | 成人无遮挡免费网站视频在线观看 | 美女少妇一区二区| 亚洲永久视频| 久久久性生活视频| 午夜日韩福利| 国产免费一区二区三区四在线播放| 嫩草一区二区三区| 国产乱码精品一区二区三区日韩精品| 欧美不卡在线观看| 国产女人精品视频| 日韩不卡视频在线观看| 欧美一级电影久久| 九色porny丨首页入口在线| 欧美精品videosex极品1| 国产激情在线| 北条麻妃一区二区三区中文字幕| 国产永久免费高清在线观看| 亚洲经典中文字幕| 欧美一级淫片aaaaaa| 精品少妇一区二区三区在线播放 | 国产另类ts人妖一区二区| 亚洲成人av免费看| 久久人人97超碰国产公开结果| 欧美一区二区三区爽大粗免费| 国产一区视频在线观看免费| www国产无套内射com| 91精品久久久久久久蜜月| 永久免费精品视频网站| 欧美大黑bbbbbbbbb在线| 亚洲精品8mav| 999久久久免费精品国产| 亚洲二区自拍| 忘忧草精品久久久久久久高清| 在线观看国产一区| 亚洲视频在线免费| 欧美一级特黄aaaaaa在线看片| 亚洲天堂免费| 日本中文字幕在线视频观看| 精品1区2区3区4区| 91精品91久久久中77777老牛| 99精品热视频只有精品10| 国模吧无码一区二区三区| 老牛国产精品一区的观看方式| 欧美少妇性生活视频| 免费高清成人在线| 性久久久久久久久久久久久久| 国产成人在线观看| v天堂中文在线| 国产亚洲精品aa| 自拍偷拍第9页| 亚洲精品国产精华液| 香蕉视频一区二区| 色婷婷亚洲精品| 一本色道久久综合无码人妻| 欧美一级高清片| 天堂中文资源在线观看| 亚洲欧美制服另类日韩| 超碰97在线免费观看| 欧美www在线| 日韩脚交footjobhd| 国产精品国产三级国产aⅴ9色 | 九九热爱视频精品视频| 日韩av片永久免费网站| 成人看片网站| 91免费高清视频| 国产无遮挡裸体免费久久| 日韩精品一区二区三区视频播放 | 99香蕉国产精品偷在线观看| 97国产在线播放| 免费成人小视频| 亚洲美女精品视频| 国产午夜一区二区三区| 一区视频免费观看| 欧美日韩亚洲一区二区三区| 国产情侣小视频| 欧美成人精品二区三区99精品| 飘雪影院手机免费高清版在线观看| 在线视频欧美日韩精品| 牛牛精品视频在线| 国产精品精品国产| av动漫精品一区二区| 日韩一本精品| 亚洲精品孕妇| 国产精品久久久久久9999| 91日韩一区二区三区| 手机在线免费看毛片| 亚洲福利视频三区| 中文文字幕一区二区三三| 亚洲精品av在线| 日本高清成人vr专区| 国产成人精品免高潮费视频| 亚洲精品福利| 亚洲欧洲日夜超级视频| 免费国产自线拍一欧美视频| 亚洲天堂小视频| 国产精品国产三级国产a | 在线成人小视频| 欧洲视频在线免费观看| 欧美伦理91i| 欧美成人家庭影院| 久久亚洲午夜电影| 影音先锋久久| 蜜桃视频无码区在线观看| 国产精品入口麻豆九色| 天堂а√在线中文在线新版| 欧美成人免费网站| 在线免费观看的av| 国产欧美日韩精品专区| 国产欧美日韩| 国产最新免费视频| 成人福利视频在线看| 国产va在线播放| 欧美一区二区三区四区视频| a天堂中文在线| 国产91热爆ts人妖在线| 日韩人体视频| 18岁网站在线观看| 91亚洲永久精品| 五月婷婷开心网| 日韩av综合中文字幕| www在线看| 国产伦一区二区三区色一情| 欧美日韩ab| 风韵丰满熟妇啪啪区老熟熟女| 亚洲日本乱码在线观看| 国产精品一级视频| 久久色免费在线视频| 高清一区二区| 肉大捧一出免费观看网站在线播放| 极品少妇一区二区三区精品视频| 夫妇露脸对白88av| 欧美日韩卡一卡二| 色哟哟免费在线观看| 国产欧美在线观看| 亚洲一区 二区 三区| 三级黄色片免费看| 一区二区三区在线不卡| 亚洲欧美强伦一区二区| 久久久久中文字幕2018| 久久精品66| 116极品美女午夜一级| 久久久久久**毛片大全| 奴色虐av一区二区三区| 最近的2019中文字幕免费一页| 日韩色性视频| 国产在线视频综合| 91美女片黄在线观看91美女| 天天干,天天干| 最近2019年手机中文字幕| 亚洲一区二区av| 国产成人永久免费视频| 99久久国产综合精品色伊| 欧美精品一二三四区| 亚洲最大中文字幕| 国产精品一区二区精品| 亚洲精品无码国产| 国产亚洲欧美激情| 国产又粗又黄又爽| 欧美—级a级欧美特级ar全黄| 日韩欧美ww| 五月天开心婷婷| 亚洲国产欧美另类丝袜| 青青草免费在线视频| 国产日韩精品一区二区| 在线日韩中文| 人妻熟人中文字幕一区二区| 欧美一区二区三区四区五区| 涩涩av在线| 中文字幕黄色大片| av在线免费不卡| 91精品国产乱码久久久| 久久久久久久999| 欧美先锋资源| zjzjzjzjzj亚洲女人| 欧美性生活影院| 国产亚av手机在线观看| 日韩精品一区二区三区色偷偷| 国产在线不卡视频| 丁香社区五月天| 久久99久久久久久久噜噜| 免费不卡中文字幕在线| av在线免费看片| 日韩欧美中文字幕在线观看| fc2ppv国产精品久久| 欧美日韩一区在线观看视频|