{"id":712,"date":"2010-10-17T11:02:21","date_gmt":"2010-10-17T09:02:21","guid":{"rendered":"http:\/\/mariusbancila.ro\/blog\/?p=712"},"modified":"2011-05-19T15:21:19","modified_gmt":"2011-05-19T13:21:19","slug":"no-more-inline-asm-in-vc-on-x64","status":"publish","type":"post","link":"https:\/\/mariusbancila.ro\/blog\/2010\/10\/17\/no-more-inline-asm-in-vc-on-x64\/","title":{"rendered":"No more inline ASM in VC++ on x64"},"content":{"rendered":"<p>I&#8217;m working on a project to port a 32-bit application for the x64 platform. The first errors that came up when building for x64 were related to <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/4ks26t93.aspx\">inline ASM code<\/a>, which is no longer supported in VC++ for x64. VC++ has an inline assembler built within the compiler, so you could write assembly code directly in C++ without the need of an external assembler (such as MASM). However, this works only on x86. For x64 and IA64 this is no longer possible. There are several workaround for this:<\/p>\n<ul>\n<li>put the assembly code into a separate file and use <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/hb5z4sxd.aspx\">MASM for x64<\/a><\/li>\n<li>use compiler intrinsics, which are functions that basically wrap assembly instructions or sequence of intructions<\/li>\n<li>rewrite in C++, use Windows APIs, etc.<\/li>\n<\/ul>\n<p>One error that I had was related to this assembly code:<\/p>\n<pre name=\"code\" class=\"cpp\">\r\n   __asm {\r\n      int 3\r\n   }\r\n<\/pre>\n<p>This was used to generate a breakpoint. This can be easily replaced with compiler intrinsic <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/f408b4et.aspx\">__debugbreak()<\/a>, which has an identical effect, except that is available on all platforms.<\/p>\n<p>Other errors I had were due to assembly code used to retrieve the value of the EIP and EBP registers. They were used for walking the stack.<\/p>\n<pre name=\"code\" class=\"cpp\">\r\n__declspec(naked) DWORD_PTR* GetEip()\r\n{\r\n   __asm {\r\n      pop   eax\r\n      push  eax\r\n      ret\r\n   }\r\n}\r\n\r\n__declspec(naked) DWORD_PTR* GetEbp()\r\n{\r\n   __asm {\r\n      mov   eax, ebp\r\n      ret\r\n   }\r\n}\r\n<\/pre>\n<p>The naked specifier is another thing that is not supported on x64. One way to retrieve the value of these registers that works both with x86 and x64 is using RtlCaptureContext, except that this won&#8217;t work on operating system previous to Windows XP. In you don&#8217;t care about those operating systems, you could write something like this:<\/p>\n<pre name=\"code\" class=\"cpp\">\r\n      CONTEXT context;\r\n      RtlCaptureContext(&context);\r\n\r\n#ifdef _WIN64\r\n      DWORD_PTR* ebp = (DWORD_PTR*)context.Rsp;\r\n      DWORD_PTR* eip = (DWORD_PTR*)context.Rip;\r\n#else\r\n      DWORD_PTR* ebp = (DWORD_PTR*)context.Ebp;\r\n      DWORD_PTR* eip = (DWORD_PTR*)context.Eip;\r\n#endif\r\n<\/pre>\n<p>Attention, on x64, register EBP (actually RBP) is no longer used. You should use RSP for getting the stack frame. <\/p>\n<p>However, if you want to build a portable stack walking, use <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ms680650%28VS.85%29.aspx\">StackWalk64<\/a>. Despite the 64 suffix, this function works on all platforms (x86, x64, IA64). <a href=\"http:\/\/www.codeproject.com\/KB\/threads\/StackWalker.aspx\">Here<\/a> is an article that shows how to walk the stack using StackWalk64.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;m working on a project to port a 32-bit application for the x64 platform. The first errors that came up when building for x64 were related to inline ASM code, which is no longer supported in VC++ for x64. VC++ has an inline assembler built within the compiler, so you could write assembly code directly &#8230; <a title=\"No more inline ASM in VC++ on x64\" class=\"read-more\" href=\"https:\/\/mariusbancila.ro\/blog\/2010\/10\/17\/no-more-inline-asm-in-vc-on-x64\/\" aria-label=\"Read more about No more inline ASM in VC++ on x64\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","advgb_blocks_editor_width":"","advgb_blocks_columns_visual_guide":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[237,7,8],"tags":[165,239,34,238],"class_list":["post-712","post","type-post","status-publish","format-standard","hentry","category-64bit","category-c","category-windows-programming","tag-assembly","tag-porting","tag-vc","tag-x64"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"Inline assembly in VC++ is no longer supported on platform x64. Use workarounds like separate assembly file, compiler intrinsics or rewrite in C++.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Marius Bancila\"\/>\n\t<meta name=\"keywords\" content=\"x64,asm,assembly,intrinsics,porting,vc++\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/mariusbancila.ro\/blog\/2010\/10\/17\/no-more-inline-asm-in-vc-on-x64\/\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Marius Bancila&#039;s Blog | About code. Mostly on C++\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"No more inline ASM in VC++ on x64\" \/>\n\t\t<meta property=\"og:description\" content=\"Inline assembly in VC++ is no longer supported on platform x64. Use workarounds like separate assembly file, compiler intrinsics or rewrite in C++.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/mariusbancila.ro\/blog\/2010\/10\/17\/no-more-inline-asm-in-vc-on-x64\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2010-10-17T09:02:21+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2011-05-19T13:21:19+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"No more inline ASM in VC++ on x64\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Inline assembly in VC++ is no longer supported on platform x64. Use workarounds like separate assembly file, compiler intrinsics or rewrite in C++.\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2010\\\/10\\\/17\\\/no-more-inline-asm-in-vc-on-x64\\\/#article\",\"name\":\"No more inline ASM in VC++ on x64\",\"headline\":\"No more inline ASM in VC++ on x64\",\"author\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\"},\"datePublished\":\"2010-10-17T11:02:21+02:00\",\"dateModified\":\"2011-05-19T15:21:19+02:00\",\"inLanguage\":\"en-US\",\"commentCount\":1,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2010\\\/10\\\/17\\\/no-more-inline-asm-in-vc-on-x64\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2010\\\/10\\\/17\\\/no-more-inline-asm-in-vc-on-x64\\\/#webpage\"},\"articleSection\":\"64bit, C++, Windows Programming, assembly, porting, VC++, x64\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2010\\\/10\\\/17\\\/no-more-inline-asm-in-vc-on-x64\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"name\":\"IT\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"position\":2,\"name\":\"IT\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/#listItem\",\"name\":\"Software\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/#listItem\",\"position\":3,\"name\":\"Software\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/c\\\/#listItem\",\"name\":\"C++\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"name\":\"IT\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/c\\\/#listItem\",\"position\":4,\"name\":\"C++\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/c\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2010\\\/10\\\/17\\\/no-more-inline-asm-in-vc-on-x64\\\/#listItem\",\"name\":\"No more inline ASM in VC++ on x64\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/#listItem\",\"name\":\"Software\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2010\\\/10\\\/17\\\/no-more-inline-asm-in-vc-on-x64\\\/#listItem\",\"position\":5,\"name\":\"No more inline ASM in VC++ on x64\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/c\\\/#listItem\",\"name\":\"C++\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\",\"name\":\"Marius Bancila's Blog\",\"description\":\"About code. Mostly on C++\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/\",\"name\":\"Marius Bancila\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2010\\\/10\\\/17\\\/no-more-inline-asm-in-vc-on-x64\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a84dd2831d955c38355ddea55df4df260809b88f36408bc14fd4eab8f7f131c9?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Marius Bancila\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2010\\\/10\\\/17\\\/no-more-inline-asm-in-vc-on-x64\\\/#webpage\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2010\\\/10\\\/17\\\/no-more-inline-asm-in-vc-on-x64\\\/\",\"name\":\"No more inline ASM in VC++ on x64\",\"description\":\"Inline assembly in VC++ is no longer supported on platform x64. Use workarounds like separate assembly file, compiler intrinsics or rewrite in C++.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2010\\\/10\\\/17\\\/no-more-inline-asm-in-vc-on-x64\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"datePublished\":\"2010-10-17T11:02:21+02:00\",\"dateModified\":\"2011-05-19T15:21:19+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/\",\"name\":\"Marius Bancila's Blog\",\"description\":\"About code. Mostly on C++\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"No more inline ASM in VC++ on x64","description":"Inline assembly in VC++ is no longer supported on platform x64. Use workarounds like separate assembly file, compiler intrinsics or rewrite in C++.","canonical_url":"https:\/\/mariusbancila.ro\/blog\/2010\/10\/17\/no-more-inline-asm-in-vc-on-x64\/","robots":"max-image-preview:large","keywords":"x64,asm,assembly,intrinsics,porting,vc++","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/mariusbancila.ro\/blog\/2010\/10\/17\/no-more-inline-asm-in-vc-on-x64\/#article","name":"No more inline ASM in VC++ on x64","headline":"No more inline ASM in VC++ on x64","author":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"publisher":{"@id":"https:\/\/mariusbancila.ro\/blog\/#organization"},"datePublished":"2010-10-17T11:02:21+02:00","dateModified":"2011-05-19T15:21:19+02:00","inLanguage":"en-US","commentCount":1,"mainEntityOfPage":{"@id":"https:\/\/mariusbancila.ro\/blog\/2010\/10\/17\/no-more-inline-asm-in-vc-on-x64\/#webpage"},"isPartOf":{"@id":"https:\/\/mariusbancila.ro\/blog\/2010\/10\/17\/no-more-inline-asm-in-vc-on-x64\/#webpage"},"articleSection":"64bit, C++, Windows Programming, assembly, porting, VC++, x64"},{"@type":"BreadcrumbList","@id":"https:\/\/mariusbancila.ro\/blog\/2010\/10\/17\/no-more-inline-asm-in-vc-on-x64\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/#listItem","position":1,"name":"Home","item":"https:\/\/mariusbancila.ro\/blog\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","name":"IT"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","position":2,"name":"IT","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/#listItem","name":"Software"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/#listItem","position":3,"name":"Software","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/#listItem","name":"C++"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","name":"IT"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/#listItem","position":4,"name":"C++","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/2010\/10\/17\/no-more-inline-asm-in-vc-on-x64\/#listItem","name":"No more inline ASM in VC++ on x64"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/#listItem","name":"Software"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/2010\/10\/17\/no-more-inline-asm-in-vc-on-x64\/#listItem","position":5,"name":"No more inline ASM in VC++ on x64","previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/#listItem","name":"C++"}}]},{"@type":"Organization","@id":"https:\/\/mariusbancila.ro\/blog\/#organization","name":"Marius Bancila's Blog","description":"About code. Mostly on C++","url":"https:\/\/mariusbancila.ro\/blog\/"},{"@type":"Person","@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author","url":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/","name":"Marius Bancila","image":{"@type":"ImageObject","@id":"https:\/\/mariusbancila.ro\/blog\/2010\/10\/17\/no-more-inline-asm-in-vc-on-x64\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/a84dd2831d955c38355ddea55df4df260809b88f36408bc14fd4eab8f7f131c9?s=96&d=mm&r=g","width":96,"height":96,"caption":"Marius Bancila"}},{"@type":"WebPage","@id":"https:\/\/mariusbancila.ro\/blog\/2010\/10\/17\/no-more-inline-asm-in-vc-on-x64\/#webpage","url":"https:\/\/mariusbancila.ro\/blog\/2010\/10\/17\/no-more-inline-asm-in-vc-on-x64\/","name":"No more inline ASM in VC++ on x64","description":"Inline assembly in VC++ is no longer supported on platform x64. Use workarounds like separate assembly file, compiler intrinsics or rewrite in C++.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/mariusbancila.ro\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/mariusbancila.ro\/blog\/2010\/10\/17\/no-more-inline-asm-in-vc-on-x64\/#breadcrumblist"},"author":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"creator":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"datePublished":"2010-10-17T11:02:21+02:00","dateModified":"2011-05-19T15:21:19+02:00"},{"@type":"WebSite","@id":"https:\/\/mariusbancila.ro\/blog\/#website","url":"https:\/\/mariusbancila.ro\/blog\/","name":"Marius Bancila's Blog","description":"About code. Mostly on C++","inLanguage":"en-US","publisher":{"@id":"https:\/\/mariusbancila.ro\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"Marius Bancila's Blog | About code. Mostly on C++","og:type":"article","og:title":"No more inline ASM in VC++ on x64","og:description":"Inline assembly in VC++ is no longer supported on platform x64. Use workarounds like separate assembly file, compiler intrinsics or rewrite in C++.","og:url":"https:\/\/mariusbancila.ro\/blog\/2010\/10\/17\/no-more-inline-asm-in-vc-on-x64\/","article:published_time":"2010-10-17T09:02:21+00:00","article:modified_time":"2011-05-19T13:21:19+00:00","twitter:card":"summary","twitter:title":"No more inline ASM in VC++ on x64","twitter:description":"Inline assembly in VC++ is no longer supported on platform x64. Use workarounds like separate assembly file, compiler intrinsics or rewrite in C++."},"aioseo_meta_data":{"post_id":"712","title":"No more inline ASM in VC++ on x64","description":"Inline assembly in VC++ is no longer supported on platform x64. Use workarounds like separate assembly file, compiler intrinsics or rewrite in C++.","keywords":[{"label":"x64","value":"x64"},{"label":"ASM","value":"ASM"},{"label":"assembly","value":"assembly"},{"label":"intrinsics","value":"intrinsics"}],"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2021-03-18 21:13:46","updated":"2025-12-12 07:34:17","seo_analyzer_scan_date":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"author_meta":{"display_name":"Marius Bancila","author_link":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/"},"featured_img":null,"jetpack_publicize_connections":[],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Marius Bancila","author_link":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/"},"uagb_comment_info":1,"uagb_excerpt":"I&#8217;m working on a project to port a 32-bit application for the x64 platform. The first errors that came up when building for x64 were related to inline ASM code, which is no longer supported in VC++ for x64. VC++ has an inline assembler built within the compiler, so you could write assembly code directly&hellip;","coauthors":[],"tax_additional":{"categories":{"linked":["<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/64bit\/\" class=\"advgb-post-tax-term\">64bit<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/\" class=\"advgb-post-tax-term\">C++<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/windows-programming\/\" class=\"advgb-post-tax-term\">Windows Programming<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">64bit<\/span>","<span class=\"advgb-post-tax-term\">C++<\/span>","<span class=\"advgb-post-tax-term\">Windows Programming<\/span>"]},"tags":{"linked":["<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/windows-programming\/\" class=\"advgb-post-tax-term\">assembly<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/windows-programming\/\" class=\"advgb-post-tax-term\">porting<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/windows-programming\/\" class=\"advgb-post-tax-term\">VC++<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/windows-programming\/\" class=\"advgb-post-tax-term\">x64<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">assembly<\/span>","<span class=\"advgb-post-tax-term\">porting<\/span>","<span class=\"advgb-post-tax-term\">VC++<\/span>","<span class=\"advgb-post-tax-term\">x64<\/span>"]}},"comment_count":"1","relative_dates":{"created":"Posted 16 years ago","modified":"Updated 15 years ago"},"absolute_dates":{"created":"Posted on October 17, 2010","modified":"Updated on May 19, 2011"},"absolute_dates_time":{"created":"Posted on October 17, 2010 11:02 am","modified":"Updated on May 19, 2011 3:21 pm"},"featured_img_caption":"","series_order":"","jetpack_shortlink":"https:\/\/wp.me\/pYNdv-bu","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/712","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/comments?post=712"}],"version-history":[{"count":7,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/712\/revisions"}],"predecessor-version":[{"id":871,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/712\/revisions\/871"}],"wp:attachment":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/media?parent=712"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/categories?post=712"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/tags?post=712"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}